以下是UDP发送和接收数据的C++代码示例:
发送数据:
```c++
#include
#include
#include
#include
#include
int main() {
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd < 0) {
std::cerr << "Error creating socket" << std::endl;
return -1;
}
struct sockaddr_in servaddr;
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(12345);
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
const char* message = "Hello, UDP!";
int n = sendto(sockfd, message, strlen(message), 0, (struct sockaddr*)&servaddr, sizeof(servaddr));
if (n < 0) {
std::cerr << "Error sending message" << std::endl;
return -1;
}
close(sockfd);
return 0;
}
```
接收数据:
```c++
#include
#include
#include
#include
#include
int main() {
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd < 0) {
std::cerr << "Error creating socket" << std::endl;
return -1;
}
struct sockaddr_in servaddr;
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(12345);
servaddr.sin_addr.s_addr = INADDR_ANY;
if (bind(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0) {
std::cerr << "Error binding socket" << std::endl;
return -1;
}
char buffer[1024];
struct sockaddr_in cliaddr;
socklen_t len = sizeof(cliaddr);
int n = recvfrom(sockfd, buffer, sizeof(buffer), 0, (struct sockaddr*)&cliaddr, &len);
if (n < 0) {
std::cerr << "Error receiving message" << std::endl;
return -1;
}
std::