C语言实现udp客户端根据输入的ip,端口,发包大小和发包间隔实现通讯代码
时间: 2024-05-12 08:18:00 浏览: 10
下面是一个简单的C语言实现udp客户端的代码示例,可以根据输入的ip、端口、发包大小和发包间隔来实现通讯:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <time.h>
#define BUF_SIZE 1024
int main(int argc, char *argv[]) {
if (argc != 5) {
fprintf(stderr, "Usage: %s <ip> <port> <packet_size> <interval>\n", argv[0]);
return 1;
}
const char *ip = argv[1];
int port = atoi(argv[2]);
int packet_size = atoi(argv[3]);
int interval = atoi(argv[4]);
srand(time(NULL));
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd < 0) {
perror("socket");
return 1;
}
struct sockaddr_in addr;
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
if (inet_pton(AF_INET, ip, &addr.sin_addr) <= 0) {
fprintf(stderr, "Invalid ip address: %s\n", ip);
return 1;
}
char *buf = (char *)malloc(BUF_SIZE);
memset(buf, 'a', packet_size);
buf[packet_size] = '\0';
while (1) {
int n = sendto(sockfd, buf, packet_size, 0, (struct sockaddr *)&addr, sizeof(addr));
if (n < 0) {
perror("sendto");
break;
}
printf("Sent %d bytes to %s:%d\n", n, ip, port);
sleep(interval);
}
free(buf);
close(sockfd);
return 0;
}
```
上述代码实现了一个简单的UDP客户端,使用`socket()`函数创建一个UDP套接字,绑定远程IP地址和端口号,并循环发送指定大小的数据包,间隔时间由用户输入决定。