📄 snd.c
字号:
#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <time.h>#include <netdb.h>#include <signal.h>#define MS 1000#define PORT 8000#define BUF_SIZE 2000#define PKT_MAX 1int count = 0;int send_proc(int sd, char *addr, int cnt, int delay, int size){ struct sockaddr_in sin; int i; char buf[BUF_SIZE]; struct hostent *he; int pkt_cnt = 0; he = gethostbyname(addr); if(he==NULL) { perror("gethostbyname()"); return -1; } printf("send_to: %u.%u.%u.%u\n", (unsigned char)he->h_addr[0], (unsigned char)he->h_addr[1], (unsigned char)he->h_addr[2], (unsigned char)he->h_addr[3]); bzero(&sin, sizeof(sin)); sin.sin_family = AF_INET;/* sin.sin_len = sizeof(sin); */ sin.sin_port = htons(PORT); sin.sin_addr.s_addr = *(unsigned long *)he->h_addr; for(i=0; i<sizeof(buf); i++) buf[i] = i%256; while(1) { int ret; ret = sendto(sd, buf, size, 0, (struct sockaddr *)&sin, sizeof(sin)); if(ret<0) { perror("sendto()"); usleep(delay*MS); continue; } else count ++; pkt_cnt ++; if(pkt_cnt>=cnt) { usleep(delay*MS); pkt_cnt = 0; } }}int create_sock(void){ int sd; sd = socket(AF_INET, SOCK_DGRAM, 0); if(sd<0) { perror("socket()"); return -1; } return sd;}void sigint(int sig){ printf("count = %d\n", count); exit(0);}int main(int argc, char **argv){ pid_t pid; int sd = create_sock(); int delay; int pktcnt; int size; if(argc!=5) { printf("Usage: %s host PktCount DelayValue PktSize\n", argv[0]); exit(0); } signal(SIGINT, sigint); pktcnt = atoi(argv[2]); delay = atoi(argv[3]); size = atoi(argv[4]); if(size < 1) size = 1; if(delay<0 || delay>1000) { printf("DelayValue must >=0 && <=1000\n"); exit(1); } if(sd<0) exit(1); printf("packet size: %d\n", size); printf("send speed: %d pps\n", pktcnt*1000/delay); send_proc(sd, argv[1], pktcnt, delay, size); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -