/* dgsend.c */ /* Send a datagram without using a connected socket */ #define begin { #define end } #include #include #include #include #include char buf[1024*64] = "This is some data"; struct hostent *hp; struct hostent *gethostbyname(); struct sockaddr_in name; main(argc, argv) int argc; char *argv[]; begin int i; unsigned char c; int sock; int status; int msglen; sock = socket(AF_INET, SOCK_DGRAM, 0); if (sock < 0) begin printf("Socket create failed \n"); exit(1); end hp = gethostbyname(argv[1]); if (hp == 0) begin printf("Host %s not found\n", argv[1]); exit(1); end bcopy((char *)hp->h_addr, (char *)&name.sin_addr, hp->h_length); printf("Length = %d | Addr = ", hp->h_length); for (i = 0; i < hp->h_length; i++) begin c = *((char *)&name.sin_addr + i); printf(" %2x", c); end printf("\n"); name.sin_family = AF_INET; name.sin_port = htons(atoi(argv[2])); msglen = atoi(argv[3]); status = sendto(sock, buf, msglen, 0, (struct sockaddr *)&name, sizeof(name)); printf("status = %d \n", status); end