用C编写一个UDP客户端程序,向服务器发送一个字符串,并接收服务器返回的响应。
时间: 2024-09-30 08:12:04 浏览: 40
使用MFC实现简单的UDP客户端服务器通讯程序.zip
5星 · 资源好评率100%
在C语言中,你可以使用socket API来创建一个UDP客户端程序。这里是一个简单的示例,展示了如何完成这个任务:
```c
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#define PORT 12345 // 假设服务器端口
#define MAX_PACKET_SIZE 1024
int main() {
int client_socket = socket(AF_INET, SOCK_DGRAM, 0);
if (client_socket < 0) {
perror("Failed to create socket");
return 1;
}
char* server_ip = "192.168.1.1"; // 服务器IP地址
struct sockaddr_in server_address;
memset(&server_address, 0, sizeof(server_address));
server_address.sin_family = AF_INET;
inet_pton(AF_INET, server_ip, &server_address.sin_addr);
server_address.sin_port = htons(PORT);
char message[] = "Hello from UDP client!";
char response[MAX_PACKET_SIZE] = {0};
socklen_t server_length = sizeof(server_address);
sendto(client_socket, message, strlen(message), 0, (struct sockaddr*)&server_address, server_length); // 发送数据
ssize_t bytes_received = recvfrom(client_socket, response, MAX_PACKET_SIZE - 1, 0, (struct sockaddr*)&server_address, &server_length); // 接收数据
if (bytes_received > 0) {
response[bytes_received] = '\0'; // 结束字符串
printf("Server's response: %s\n", response);
} else {
perror("Failed to receive data");
}
close(client_socket);
return 0;
}
```
这个程序首先创建了一个UDP套接字,然后设置了目标服务器的地址和端口。接着它构造了一个消息并发送到服务器,最后接收服务器的响应。注意,由于UDP是无连接的,所以`recvfrom()`函数不会保证一定能收到响应。
阅读全文