在C语言中,你可以使用套接字编程来生成并发送UDP数据包。以下是一个简单的示例,演示如何创建一个UDP客户端,并向指定的IP地址(192.168.133.133)和端口发送数据。
UDP 客户端示例
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h> // For close()
#include <arpa/inet.h> // For sockaddr_in
#define SERVER_IP "192.168.133.133"
#define SERVER_PORT 12345
#define BUFFER_SIZE 1024
int main() {
int sock;
struct sockaddr_in server_addr;
char *message = "Hello, UDP!";
// 创建UDP套接字
if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
perror("socket creation failed");
exit(EXIT_FAILURE);
}
// 设置服务器地址结构体
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET; // IPv4
server_addr.sin_port = htons(SERVER_PORT); // 端口号
if (inet_pton(AF_INET, SERVER_IP, &server_addr.sin_addr) <= 0) {
perror("Invalid address/ Address not supported");
close(sock);
exit(EXIT_FAILURE);
}
// 发送UDP数据包
ssize_t sent_bytes = sendto(sock, message, strlen(message), MSG_CONFIRM,
(const struct sockaddr *) &server_addr,
sizeof(server_addr));
if (sent_bytes < 0) {
perror("sendto failed");
close(sock);
exit(EXIT_FAILURE);
}
printf("Sent %ld bytes to %s:%d\n", sent_bytes, SERVER_IP, SERVER_PORT);
// 关闭套接字
close(sock);
return 0;
}
编译和运行
- 将上面的代码保存到一个文件,例如
udp_client.c
。 - 在终端中编译这个程序:
gcc -o udp_client udp_client.c
- 然后运行它:
./udp_client
注意事项
- 确保目标IP地址和端口号是正确的。
- 在实际应用中,请确保你的防火墙设置允许UDP流量通过相应的端口。
- 如果你需要从服务器接收响应,可以进一步扩展这个程序,包括使用
recvfrom()
函数。
内容由零声教学AI助手提供,问题来源于学员提问