#include #include #include #include #include #include #include char* server="192.168.10.25"; unsigned port=8888; size_t buflen=1400; void die(char *s) { perror(s); exit(1); } char* MakeBuf(size_t s) { int i; char* buf = (char*) malloc(s); if (!buf) die("Can't allocate memory"); for (i = 0; i < s - 1; i++) buf[i] = 'a' + rand()%26; buf[i] = '\0'; return buf; } void Usage() { printf("Usage: udpsender [OPTIONS]\n" "OPTIONS:\n" "-d host - Destination host\n" "-p port - Destination port\n" "-s size - Packet size\n" ); } int ParceArgs(int argc, char *argv[]) { int opt; while((opt = getopt(argc, argv, "hp:d:s:")) != -1) { switch(opt) { case 'p': port = atoi(optarg); break; case 's': buflen = atoi(optarg); break; case 'd': server = strdup(optarg); break; default: Usage(); exit(1); } } return 1; } int main(int argc, char *argv[]) { struct sockaddr_in si; int s, i; ParceArgs(argc,argv); char* testmsg = MakeBuf(buflen); if ( (s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) { die("Error: socket()"); } memset((char *) &si, 0, sizeof(si)); si.sin_family = AF_INET; si.sin_port = htons(port); if (inet_aton(server , &si.sin_addr) == 0). { fprintf(stderr, "inet_aton() failed\n"); exit(1); } while(1) { if ( sendto(s, testmsg, strlen(testmsg) , 0 , (struct sockaddr *) &si, sizeof(si)) == -1 ) { die("Error: sendto()"); } } close(s); return 0; }