学堂 学堂 学堂公众号手机端

在C++中实现UDP发送和接收可以使用socket编程

lewis 2年前 (2024-01-06) 阅读数 3 #技术

在C++中实现UDP发送和接收可以使用socket编程。下面是一个简单的示例代码:

发送UDP数据包:

#include<iostream> #include<string> #include<cstring> #include<unistd.h> #include<sys/socket.h> #include<netinet/in.h> intmain(){ intsockfd; structsockaddr_inserverAddr; //创建UDPsocket sockfd=socket(AF_INET,SOCK_DGRAM,0); if(sockfd<0){ std::cerr<<"Failedtocreatesocket"<<std::endl; return-1; } //设置服务器地址和端口 serverAddr.sin_family=AF_INET; serverAddr.sin_port=htons(12345); serverAddr.sin_addr.s_addr=inet_addr("127.0.0.1"); //发送数据 std::stringmessage="Hello,UDP!"; sendto(sockfd,message.c_str(),message.length(),0,(structsockaddr*)&serverAddr,sizeof(serverAddr)); close(sockfd); return0; }

接收UDP数据包:


#include<iostream> #include<string> #include<cstring> #include<unistd.h> #include<sys/socket.h> #include<netinet/in.h> intmain(){ intsockfd; structsockaddr_inserverAddr,clientAddr; socklen_taddrLen=sizeof(clientAddr); charbuffer[1024]; //创建UDPsocket sockfd=socket(AF_INET,SOCK_DGRAM,0); if(sockfd<0){ std::cerr<<"Failedtocreatesocket"<<std::endl; return-1; } //设置服务器地址和端口 serverAddr.sin_family=AF_INET; serverAddr.sin_port=htons(12345); serverAddr.sin_addr.s_addr=INADDR_ANY; //绑定地址和端口 bind(sockfd,(structsockaddr*)&serverAddr,sizeof(serverAddr)); //接收数据 intbytesReceived=recvfrom(sockfd,buffer,1024,0,(structsockaddr*)&clientAddr,&addrLen); buffer[bytesReceived]='\0'; std::cout<<"Received:"<<buffer<<std::endl; close(sockfd); return0; }

以上代码实现了一个简单的UDP发送和接收示例,可以根据实际需求进行进一步的扩展和优化。

版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门