C++网络编程(UDP)

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


 


你可能感兴趣的:(编程,C++,网络,struct,socket)