在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发送和接收示例,可以根据实际需求进行进一步的扩展和优化。