在C语言中,你可以使用UDP协议将数据发送到本地回环IP(127.0.0.1)的特定端口。下面是一个简单的示例,展示了如何创建一个UDP客户端,将数据发送到指定的本地端口,并创建一个UDP服务器接收这些数据。
UDP服务器示例
首先,编写一个UDP服务器,它会监听某个端口并打印接收到的数据。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#define PORT 8080 // 监听的端口
#define BUF_SIZE 1024
int main() {
int sockfd;
struct sockaddr_in servaddr, cliaddr;
char buffer[BUF_SIZE];
socklen_t len = sizeof(cliaddr);
// 创建socket
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_addr.s_addr = INADDR_ANY; // 接受任何地址
servaddr.sin_port = htons(PORT); // 设置端口号
// 绑定socket与地址
if (bind(sockfd, (const struct sockaddr *)&servaddr, sizeof(servaddr)) < 0) {
perror("Bind failed");
close(sockfd);
exit(EXIT_FAILURE);
}
printf("Server listening on port %d\n", PORT);
while (1) {
ssize_t n = recvfrom(sockfd, buffer, BUF_SIZE, MSG_WAITALL,
(struct sockaddr *)&cliaddr, &len);
buffer[n] = '\0'; // 添加字符串结束符
printf("Received: %s\n", buffer);
}
close(sockfd);
return 0;
}
UDP客户端示例
然后,编写一个UDP客户端,它将信息发送到上面定义的服务器。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#define PORT 8080 // 要发送的目标端口
#define SERVER_IP "127.0.0.1" // 本地回环IP
int main() {
int sockfd;
struct sockaddr_in servaddr;
char *message = "Hello from UDP client!";
// 创建socket
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); // 设置目标端口
// 将IPv4地址从文本转换为二进制形式
if (inet_pton(AF_INET, SERVER_IP, &servaddr.sin_addr) <= 0) {
perror("Invalid address/ Address not supported");
exit(EXIT_FAILURE);
}
while(1) {
sendto(sockfd, message, strlen(message),
MSG_CONFIRM, (const struct sockaddr *) &servaddr,
sizeof(servaddr));
printf("Message sent: %s\n", message);
sleep(2); // 每2秒发送一次消息,可以根据需要调整频率。
}
close(sockfd);
return 0;
}
使用方法
首先在终端中编译和运行UDP服务器:
gcc udp_server.c -o udp_server ./udp_server
然后在另一个终端中编译和运行UDP客户端:
gcc udp_client.c -o udp_client ./udp_client
这样,客户端会每两秒向本地的UDP服务器发送一条消息,服务器则会接收到并打印出来。你可以根据实际需求修改要发送的数据内容或传输的频率。
内容由零声教学AI助手提供,问题来源于学员提问