c语言写一个udp发送设备通信,设置本地端口号和目标端口号
时间: 2024-12-21 19:29:05 浏览: 28
在C语言中,使用UDP(用户数据报协议)进行设备间通信通常涉及到套接字编程。以下是一个简单的示例,展示了如何创建一个UDP客户端,设置本地端口号和目标端口号:
```c
#include <stdio.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#define PORT_LOCAL 12345 // 设置本地端口号
#define PORT_TARGET "192.168.1.100" // 目标IP地址及端口号
void send_udp_data(int sockfd, char* data, int len) {
struct sockaddr_in target_addr;
bzero(&target_addr, sizeof(target_addr)); // 初始化结构体
inet_aton(PORT_TARGET, &target_addr.sin_addr); // 将IP转换为网络格式
target_addr.sin_family = AF_INET; // 家族标识,IPv4
target_addr.sin_port = htons(atoi(PORT_TARGET + 5)); // 目标端口,注意这里需要转换为网络字节序
if (sendto(sockfd, data, len, 0, (struct sockaddr*)&target_addr, sizeof(target_addr)) < 0) {
perror("Error sending UDP packet");
return;
}
printf("Sent %d bytes to %s:%d\n", len, inet_ntoa(target_addr.sin_addr), ntohs(target_addr.sin_port));
}
int main() {
int sock = socket(AF_INET, SOCK_DGRAM, 0); // 创建UDP套接字
if (sock == -1) {
perror("Failed to create socket");
return 1;
}
char message[] = "Hello from UDP client"; // 想要发送的数据
int msg_len = strlen(message);
send_udp_data(sock, message, msg_len);
close(sock); // 关闭套接字
return 0;
}
```
在这个例子中,我们首先创建了一个UDP套接字,然后设置了目标服务器的地址和端口。`sendto()`函数用于向指定的目标发送数据。注意,这里假设目标地址是一个固定的IP和端口。
阅读全文