#include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { struct sockaddr_in sin; char *buffer; int fd, length; long i, n; if (argc != 5) { fprintf(stderr, "%s", "Usage: send_udp remote_addr remote_port buf_len send_count\n"); return (-1); } if ((fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) { perror("socket"); } length = atoi(argv[3]); if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &length, sizeof(int)) < 0) { perror("setsockopt"); } memset(&sin, 0, sizeof(struct sockaddr_in)); sin.sin_family = AF_INET; #if defined(__FreeBSD__) || defined(__APPLE__) sin.sin_len = sizeof(struct sockaddr_in); #endif sin.sin_port = htons(atoi(argv[2])); sin.sin_addr.s_addr = inet_addr(argv[1]); buffer = calloc(1, length); n = atol(argv[4]); for (i = 0; i < n; i++) { if (sendto(fd, buffer, length, 0, (const struct sockaddr *)&sin, (socklen_t)sizeof(struct sockaddr_in)) != length) { perror("send"); } } if (close(fd) < 0) { perror("close"); } free(buffer); return (0); }