进程间udp通信c++
时间: 2024-06-04 20:03:47 浏览: 14
UDP是一种无连接的协议,不保证数据传输的可靠性,但传输速度较快。进程间UDP通信可以使用socket来实现,下面是实现步骤:
1. 创建socket:使用socket函数创建一个socket,指定协议族为AF_INET(IPv4)和SOCK_DGRAM(数据报)类型。
2. 绑定端口:使用bind函数将socket与一个端口号绑定,这样其他进程可以通过该端口号发送数据到该进程。
3. 发送数据:使用sendto函数将数据发送到指定的目的地址和端口号。
4. 接收数据:使用recvfrom函数从socket中接收数据,并获取发送者的地址和端口号。
5. 关闭socket:使用close函数关闭socket。
下面是一个简单的C++代码示例:
```
#include <iostream>
#include <cstring>
#include <sys/socket.h>
#include <arpa/inet.h>
using namespace std;
int main() {
int sock = socket(AF_INET, SOCK_DGRAM, 0); // 创建socket
if (sock == -1) {
cout << "Failed to create socket." << endl;
return -1;
}
sockaddr_in server_addr, client_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(8888);
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind(sock, (sockaddr*)&server_addr, sizeof(server_addr)) == -1) { // 绑定端口
cout << "Failed to bind port." << endl;
return -1;
}
char buffer[1024] = {0};
socklen_t client_len = sizeof(client_addr);
while (true) {
memset(buffer, 0, sizeof(buffer));
int recv_len = recvfrom(sock, buffer, sizeof(buffer), 0, (sockaddr*)&client_addr, &client_len); // 接收数据
if (recv_len == -1) {
cout << "Failed to receive data." << endl;
continue;
}
cout << "Received data: " << buffer << endl;
char* reply = "Hello from server.";
if (sendto(sock, reply, strlen(reply), 0, (sockaddr*)&client_addr, client_len) == -1) { // 发送数据
cout << "Failed to send data." << endl;
continue;
}
}
close(sock); // 关闭socket
return 0;
}
```
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)