工程-》设置》连接》 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();
}