/* Datagram client in the internet domain */ #include #include #include #include #include #include #include #include #define DATA "I love operating systems ..." #define BUFSIZE 1024 void error(char *); int main(int argc, char *argv[]) { int sock, length, n; struct in_addr *hostaddr; struct sockaddr_in server; struct hostent *hp, *gethostbyname(); char buf[BUFSIZE]; if (argc != 3) { printf("Usage: server port\n"); exit(1); } sock= socket(AF_INET, SOCK_DGRAM, 0); if (sock < 0) error("socket"); server.sin_family = AF_INET; hp = gethostbyname(argv[1]); if (hp==0) error("Unknown host"); hostaddr =(struct in_addr *) hp->h_addr; bcopy((char *)hostaddr, (char *)&server.sin_addr, hp->h_length); server.sin_port = htons(atoi(argv[2])); length=sizeof(struct sockaddr_in); n=sendto(sock,DATA,30,0,(struct sockaddr *)&server,length); if (n < 0) perror("Sendto"); n = recvfrom(sock,buf,BUFSIZE,0,(struct sockaddr *) &server,&length); if (n < 0) error ("recvfrom"); buf[n]='\0'; printf("The return message was %s\n",buf); return 0; } void error(char *msg) { perror(msg); exit(0); }