工程-》设置》连接》 ws2_32.lib 到“对象/库模块”中
服务器:
#include <WINSOCK2.H> #include <STDIO.H>//使用了c的输入输出 void main() { //一, //1.要加载套接字库用WSAStartup //2.WSAStartup有两个参数:wsaData,wVersionRequested //3.wsaData:存放要加载的库版本的有关信息结构体 // wVersionRequested:版本好 int err; WORD wVersionRequested = MAKEWORD(1,1); WSADATA wsaData; err = WSAStartup(wVersionRequested,&wsaData); if (err != 0) { return; } //判断版本号是不是1.1.高字节代表Winsock副版本 //低字节代表Winsock主版本 if (LOBYTE(wsaData.wVersion != 1) || HIBYTE(wsaData.wVersion) != 1) { WSACleanup(); return; } SOCKET sockSrv = socket(AF_INET,SOCK_DGRAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY); addrSrv.sin_family = AF_INET; addrSrv.sin_port = htons(6000); bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); /*函数:int recvfrom(SOCKET s,char FAR* buf,int len,int flags,struct sockaddr FAR * from,int FAR *fromlen); 参数1:套接字 参数2:接受数据buf 参数3:buf长度 参数4:可选0 参数5:【out】发送数据放的地址信息 参数6:【in】【out】地址结构的大小*/ SOCKADDR_IN addrClient; int len = sizeof(SOCKADDR); char recvBuf[100]; recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR*)&addrClient,&len); printf("%s\n",recvBuf); closesocket(sockSrv); WSACleanup(); }
//----------------------------------------------------------------------------------------------------------------
客户端:
#include <WINSOCK2.H> #include <STDIO.H>//使用了c的输入输出 void main() { //一, //1.要加载套接字库用WSAStartup //2.WSAStartup有两个参数:wsaData,wVersionRequested //3.wsaData:存放要加载的库版本的有关信息结构体 // wVersionRequested:版本好 int err; WORD wVersionRequested = MAKEWORD(1,1); WSADATA wsaData; err = WSAStartup(wVersionRequested,&wsaData); if (err != 0) { return; } //判断版本号是不是1.1.高字节代表Winsock副版本 //低字节代表Winsock主版本 if (LOBYTE(wsaData.wVersion != 1) || HIBYTE(wsaData.wVersion) != 1) { WSACleanup(); return; } SOCKET sockClient = socket(AF_INET,SOCK_DGRAM,0); /*函数:int sendto(SOCKET s,const char FAR *buf,int len,int flags,const struct sockaddr FAR *to,int tolen); 参数1:套接字 参数2:发送数据buf 参数3:buf长度 参数4:可选0 参数5:设定目的套接字的信息 参数6:地址结构体长度*/ SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); addrSrv.sin_family =AF_INET; addrSrv.sin_port = htons(6000); sendto(sockClient,"Hello",strlen("Hello")+1,0,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); closesocket(sockClient); WSACleanup(); }