C语言双向UDP实现:代码示例及解析
{"title":"C语言 双向UDP如何实现?需要代码","description":"本文将介绍如何使用C语言实现双向UDP通信,并提供相应的代码示例。","keywords":"C语言, 双向UDP, 网络编程, UDP套接字, 代码示例","content":"双向UDP可以通过创建两个UDP套接字来实现,一个用于发送数据,一个用于接收数据。以下是一个简单的C语言代码示例:\n\nc\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <arpa/inet.h>\n\n#define BUFFER_SIZE 1024\n#define PORT 8888\n\nint main() {\n int send_sock, recv_sock;\n struct sockaddr_in server_addr, client_addr;\n char send_buffer[BUFFER_SIZE], recv_buffer[BUFFER_SIZE];\n\n // 创建发送套接字\n send_sock = socket(AF_INET, SOCK_DGRAM, 0);\n if (send_sock == -1) {\n perror("Failed to create send socket");\n exit(EXIT_FAILURE);\n }\n\n // 创建接收套接字\n recv_sock = socket(AF_INET, SOCK_DGRAM, 0);\n if (recv_sock == -1) {\n perror("Failed to create receive socket");\n exit(EXIT_FAILURE);\n }\n\n // 设置服务器地址\n memset(&server_addr, 0, sizeof(server_addr));\n server_addr.sin_family = AF_INET;\n server_addr.sin_port = htons(PORT);\n server_addr.sin_addr.s_addr = htonl(INADDR_ANY);\n\n // 绑定接收套接字到服务器地址\n if (bind(recv_sock, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) {\n perror("Failed to bind receive socket");\n exit(EXIT_FAILURE);\n }\n\n while (1) {\n // 接收数据\n socklen_t addr_len = sizeof(client_addr);\n ssize_t recv_len = recvfrom(recv_sock, recv_buffer, BUFFER_SIZE, 0, (struct sockaddr*)&client_addr, &addr_len);\n if (recv_len == -1) {\n perror("Failed to receive data");\n exit(EXIT_FAILURE);\n }\n recv_buffer[recv_len] = '\0';\n printf("Received: %s\n", recv_buffer);\n\n // 发送数据\n printf("Enter message to send: ");\n fgets(send_buffer, BUFFER_SIZE, stdin);\n sendto(send_sock, send_buffer, strlen(send_buffer), 0, (struct sockaddr*)&client_addr, addr_len);\n }\n\n // 关闭套接字\n close(send_sock);\n close(recv_sock);\n\n return 0;\n}\n\n\n在这个代码示例中,我们首先创建了两个UDP套接字 send_sock 和 recv_sock,分别用于发送和接收数据。然后我们设置了服务器地址 server_addr,并将接收套接字 recv_sock 绑定到该地址。接下来,在一个无限循环中,我们先接收数据,然后通过发送套接字 send_sock 发送数据。\n\n
原文地址: https://www.cveoy.top/t/topic/pfLT 著作权归作者所有。请勿转载和采集!