首页 娱乐新闻文章正文

【Linux | 网络】socket编程 - 使用UDP实现服务端向客户端提供简单的服务(Linux网络编程:UDP实现服务端向客户端提供基础服务)

娱乐新闻 2025年07月10日 15:10 2 aaron
Linux | 网络编程 - 使用UDP实现服务端向客户端提供简单的服务 适合读者:初学者   UDP(用户数据报协议)是一种无连接的传输层协议,适用于不需要建立稳定连接的应用场景。本文将指导初学者如何使用UDP在Linux环境下编写一个简单的服务端程序,该程序可以向客户端发送消息。 步骤 1:创建服务端程序   首先,我们需要创建一个服务端程序,该程序将监听特定的UDP端口,并能够接收来自客户端的数据。 #include #include #include #include #include #define PORT 12345 int main() { int sockfd; struct sockaddr_in servaddr, cliaddr; socklen_t len; char sendline[1024], recvline[1024]; // 创建UDP套接字 if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { perror("socket creation failed"); exit(EXIT_FAILURE); } // 初始化服务器地址结构 memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(PORT); servaddr.sin_addr.s_addr = htonl(INADDR_ANY); // 绑定套接字到端口 if (bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0) { perror("bind failed"); exit(EXIT_FAILURE); } // 接收客户端消息 len = sizeof(cliaddr); if (recvfrom(sockfd, recvline, sizeof(recvline), 0, (struct sockaddr *)&cliaddr, &len) < 0) { perror("recvfrom failed"); exit(EXIT_FAILURE); } // 处理接收到的消息 printf("Received message: %s\n", recvline); // 发送响应消息 strcpy(sendline, "Hello, client!"); if (sendto(sockfd, sendline, strlen(sendline), 0, (struct sockaddr *)&cliaddr, len) < 0) { perror("sendto failed"); exit(EXIT_FAILURE); } return 0; } 步骤 2:编译程序   使用gcc编译器编译上述程序: gcc -o udp_server udp_server.c 步骤 3:运行服务端程序   在终端中运行编译好的服务端程序: ./udp_server 步骤 4:创建客户端程序   创建一个简单的客户端程序,该程序将向服务端发送消息并接收响应。 #include #include #include #include #include #define PORT 12345 #define SERVER_IP "127.0.0.1" int main() { int sockfd; struct sockaddr_in servaddr; char sendline[1024], recvline[1024]; // 创建UDP套接字 if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { perror("socket creation failed"); exit(EXIT_FAILURE); } // 初始化服务器地址结构 memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(PORT); servaddr.sin_addr.s_addr = inet_addr(SERVER_IP); // 发送消息到服务器 strcpy(sendline, "Hello, server!"); if (sendto(sockfd, sendline, strlen(sendline), 0, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0) { perror("sendto failed"); exit(EXIT_FAILURE); } // 接收服务器响应 if (recvfrom(sockfd, recvline, sizeof(recvline), 0, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0) { perror("recvfrom failed"); exit(EXIT_FAILURE); } // 打印服务器响应 printf("Received message from server: %s\n", recvline); return 0; } 步骤 5:编译并运行客户端程序   编译客户端程序: gcc -o udp_client udp_client.c   在另一个终端中运行客户端程序: ./udp_client   现在,你应该会看到客户端发送消息到服务端,并从服务端接收到的响应。

标签: in 服务 程序 客户

智杖百科 备案号:皖ICP备2023023635号 智杖百科 xml | txt