/********************************************************************* * dgsend.c - datagram sender * usage: dgsend hostname portnum "message" * action: sends message to hostname:portnum */ #include #include #include #include #include #define oops(m,x) { perror(m);exit(x);} int make_dgram_client_socket(); int make_internet_address(char *,int, struct sockaddr_in *); int main(int ac, char *av[]) { int sock; /* use this socket to send */ char *msg; /* send this messag */ struct sockaddr_in saddr; /* put sender's address here */ if ( ac != 4 ){ fprintf(stderr,"usage: dgsend host port 'message'\n"); exit(1); } msg = av[3]; /* get a datagram socket */ if( (sock = make_dgram_client_socket()) == -1 ) oops("cannot make socket",2); /* combine hostname and portnumber of destination into an address */ if ( make_internet_address(av[1], atoi(av[2]), &saddr) == -1 ) oops("make addr",4); /* send a string through the socket to that address */ if ( sendto(sock, msg, strlen(msg), 0, (struct sockaddr *)&saddr,sizeof(saddr)) == -1) oops("sendto failed", 3); return 0; }