c++ udp 只当ip地址
时间: 2023-08-01 15:09:44 浏览: 45
在C++中,使用UDP进行通信时,可以指定目标的IP地址。UDP(User Datagram Protocol)是一种无连接的传输协议,它不需要事先建立连接,可以直接将数据包发送到目标IP地址和端口。
下面是一个简单的C++代码示例,演示如何使用UDP发送数据到指定的IP地址:
```cpp
#include <iostream>
#include <cstring>
#include <arpa/inet.h>
#include <sys/socket.h>
#define MAX_BUFFER_SIZE 1024
int main() {
int sockfd;
char buffer[MAX_BUFFER_SIZE];
struct sockaddr_in serverAddr;
// 创建UDP套接字
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd == -1) {
std::cerr << "Failed to create socket." << std::endl;
return -1;
}
// 设置目标IP地址和端口
std::string ipAddress = "127.0.0.1"; // 目标IP地址
int port = 12345; // 目标端口号
memset(&serverAddr, 0, sizeof(serverAddr));
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(port);
if (inet_pton(AF_INET, ipAddress.c_str(), &(serverAddr.sin_addr)) <= 0) {
std::cerr << "Invalid address/Address not supported." << std::endl;
return -1;
}
// 发送数据
std::string message = "Hello, UDP!";
if (sendto(sockfd, message.c_str(), message.length(), 0, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) == -1) {
std::cerr << "Failed to send data." << std::endl;
return -1;
}
std::cout << "Data sent to " << ipAddress << ":" << port << std::endl;
// 关闭套接字
close(sockfd);
return 0;
}
```
这段代码创建了一个UDP套接字,将数据发送到指定的IP地址和端口。你可以根据需要修改`ipAddress`和`port`变量来指定目标IP地址和端口号。