X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=listati%2FTCP_daytime.c;fp=listati%2FTCP_daytime.c;h=e1459d9abe6994f445db485819a2aa7954181aa8;hp=0000000000000000000000000000000000000000;hb=b324b7a09e071b2f84a1849d109d4d14f27f44cd;hpb=3c1cadac6a684ce18f4e1a6e23d752ee5ba94c8f diff --git a/listati/TCP_daytime.c b/listati/TCP_daytime.c new file mode 100644 index 0000000..e1459d9 --- /dev/null +++ b/listati/TCP_daytime.c @@ -0,0 +1,48 @@ +#include /* predefined types */ +#include /* include unix standard library */ +#include /* IP addresses conversion utilities */ +#include /* socket library */ +#include /* include standard I/O library */ + +int main(int argc, char *argv[]) +{ + int sock_fd; + int i, nread; + struct sockaddr_in serv_add; + char buffer[MAXLINE]; + ... + /* create socket */ + if ( (sock_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { + perror("Socket creation error"); + return -1; + } + /* initialize address */ + memset((void *) &serv_add, 0, sizeof(serv_add)); /* clear server address */ + serv_add.sin_family = AF_INET; /* address type is INET */ + serv_add.sin_port = htons(13); /* daytime post is 13 */ + /* build address using inet_pton */ + if ( (inet_pton(AF_INET, argv[optind], &serv_add.sin_addr)) <= 0) { + perror("Address creation error"); + return -1; + } + /* extablish connection */ + if (connect(sock_fd, (struct sockaddr *)&serv_add, sizeof(serv_add)) < 0) { + perror("Connection error"); + return -1; + } + /* read daytime from server */ + while ( (nread = read(sock_fd, buffer, MAXLINE)) > 0) { + buffer[nread]=0; + if (fputs(buffer, stdout) == EOF) { /* write daytime */ + perror("fputs error"); + return -1; + } + } + /* error on read */ + if (nread < 0) { + perror("Read error"); + return -1; + } + /* normal exit */ + return 0; +}