c++--UDP发送接收
发布时间
阅读量:
阅读量
UDP发送接收
头文件
#include <Winsock2.h>
库
#pragma comment(lib,"Ws2_32.lib")//连接Sockets相关库
初始化Windows SOCKET
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData)) //初始化
{
printf("Winsock无法初始化!\n");
WSACleanup();
return;
}
客户端初始化
SOCKET uSocket_client;
uSocket_client = socket(AF_INET, SOCK_DGRAM, 0);
if (uSocket_client == INVALID_SOCKET)
{
cout << "create socket failed" << endl;
exit(EXIT_FAILURE);
}
struct sockaddr_in server;
int server_len = sizeof(server);
server.sin_family = AF_INET;
server.sin_port = htons(PORT); ///server的监听端口
server.sin_addr.s_addr = inet_addr("192.168.100.97"); ///serve的ip
客户端发送
int len=10
char* send_char = new char[len];
int send_len = sendto(uSocket_client, send_char, len, 0, (struct sockaddr*)&server, server_len);
关闭客户端
closesocket(uSocket_client);
服务端初始化
SOCKET uSocket_server = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (uSocket_server == SOCKET_ERROR)
{
cout << "create socket failed" << endl;
exit(EXIT_FAILURE);
}
sockaddr_in server_addr;
memset(&server_addr, 0, sizeof(server_addr)); //每个字节都用0填充
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(PORT);
server_addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
bind(uSocket_server, (sockaddr*)&server_addr, sizeof(sockaddr));
服务端接收
readyreceive=true;
while (readyreceive)
{
sockaddr_in clientAddr;
memset(&clientAddr, 0, sizeof(sockaddr_in));
int clientAddr_len = sizeof(sockaddr);
memset(buff, 0, sizeof(buff));
int recv_len = recvfrom(uSocket_server, buff, 1024, 0, (sockaddr*)&clientAddr, &clientAddr_len);
if (recv_len <= 0)
continue;
//相应处理
}
关闭服务端
closesocket(uSocket_server);
关闭Windows SOCKET
WSACleanup();
全部评论 (0)
还没有任何评论哟~
