Advertisement

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)

还没有任何评论哟~