服务器端:
1、创建一个套接字,并调用bind()与本机地址绑定。
2、使用recvfrom接收数据。
客户端:
1、创建一个套接字。
2、使用sendto向目标地址发送数据。
收发数据:
sendto:向目标地址发送数据。
recvfrom:接收数据,和发送端地址。
结束通信:
closesocket:关闭套接字
服务器端:
//初始化使用socket函数要用到的dll
WSADATA wd;
::WSAStartup(MAKEWORD(2,2), &wd);
//本机地址信息
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(5000);
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
//创建套接字,并与本机地址绑定
SOCKET s = ::socket(AF_INET, SOCK_DGRAM, 0);
::bind(s, (const sockaddr*)&addr, sizeof(addr));
//用来保存数据发送端的地址
sockaddr_in client_addr;
int fromlen = sizeof(sockaddr_in);
//收数据
while(1)
{
char cBuffer[1024] = {0};
::recvfrom(s, cBuffer, 1024, 0, (sockaddr*)&client_addr, &fromlen);
cout<<inet_ntoa(client_addr.sin_addr)<<endl<<cBuffer<<endl;
}
//关闭套接字
::closesocket(s);
//ws2.dll的收尾工作
::WSACleanup();
客户端:
//初始化使用socket函数要用到的dll
WSADATA wd;
WSAStartup(MAKEWORD(2,2), &wd);
//服务器地址信息
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(5000);
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
//创建套接字
SOCKET s = ::socket(AF_INET, SOCK_DGRAM, 0);
//向目标地址发送数据
while(1)
{
char cData[1024] = {0};
cin>>cData;
::sendto(s, cData, (int)strlen(cData)+1, 0, (sockaddr*)&addr, sizeof(sockaddr_in));
}
//关闭套接字
::closesocket(s);
//ws2.dll的收尾工作
::WSACleanup();