如何简单实现发版不影响客户使用?——Nginx负载均衡详细步骤指南 适合读者:初学者/进阶用户 在互联网时代,网站的稳定性和快速响应是吸引和留住用...
【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
现在,你应该会看到客户端发送消息到服务端,并从服务端接收到的响应。
上一篇
文本标签提取与大模型理解:方法论深度指南(文本标签解析与大型模型认知:全面方法论手册)
下一篇【LeetCode 热题 100】21. 合并两个有序链表——(解法二)递归法(【LeetCode 热题 100】21. 递归解法:有序链表合并)
相关文章
最新评论