From 8363203066864251f55edeb8e41bcce81fa7da7b Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Tue, 12 Jun 2001 22:17:22 +0000 Subject: [PATCH] Scritto il client; rimaneggiate le cose per debuggare. --- sources/Makefile | 5 +- sources/SimpleDaytimeTCPClient.c | 4 +- sources/SimpleEchoTCPClient.c | 116 +++++++++++++++++++++++++++++++ sources/SimpleEchoTCPServer.c | 5 +- 4 files changed, 125 insertions(+), 5 deletions(-) create mode 100644 sources/SimpleEchoTCPClient.c diff --git a/sources/Makefile b/sources/Makefile index 879aa31..3ff7b74 100644 --- a/sources/Makefile +++ b/sources/Makefile @@ -3,11 +3,13 @@ # # C flags CC=gcc -CFLAGS= -Wall +CFLAGS= -Wall -g CFLADJ=-c OBJ = SockRead.o SockWrite.o +echo: SimpleEchoTCPClient.c $(OBJ) + $(CC) $(CFLAGS) SimpleEchoTCPClient.c $(OBJ) -o echo echod: SimpleEchoTCPServer.c $(OBJ) $(CC) $(CFLAGS) SimpleEchoTCPServer.c $(OBJ) -o echod @@ -27,6 +29,7 @@ $(OBJ): wrappers.h .PHONY : clean clean: + rm -f daytime iterdaytimed daytimed echod echo rm -f *~ rm -f *.o rm -f daytime diff --git a/sources/SimpleDaytimeTCPClient.c b/sources/SimpleDaytimeTCPClient.c index 7704c8a..069b411 100644 --- a/sources/SimpleDaytimeTCPClient.c +++ b/sources/SimpleDaytimeTCPClient.c @@ -8,7 +8,7 @@ * * Usage: daytime -h give all info's * - * $Id: SimpleDaytimeTCPClient.c,v 1.1 2001/04/02 23:24:42 piccardi Exp $ + * $Id: SimpleDaytimeTCPClient.c,v 1.2 2001/06/12 22:17:22 piccardi Exp $ * ****************************************************************/ /* @@ -69,7 +69,7 @@ int main(int argc, char *argv[]) /* 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 */ + serv_add.sin_port = htons(13); /* daytime port is 13 */ /* build address using inet_pton */ if ( (inet_pton(AF_INET, argv[optind], &serv_add.sin_addr)) <= 0) { perror("Address creation error"); diff --git a/sources/SimpleEchoTCPClient.c b/sources/SimpleEchoTCPClient.c new file mode 100644 index 0000000..feac786 --- /dev/null +++ b/sources/SimpleEchoTCPClient.c @@ -0,0 +1,116 @@ +/**************************************************************** + * + * Program SimpleEchoTCPClient: + * Simple TCP client for echo service (port 7) + * + * Author: Simone Piccardi + * Jun. 2001 + * + * Usage: echo -h give all info's + * + * $Id: SimpleEchoTCPClient.c,v 1.1 2001/06/12 22:17:22 piccardi Exp $ + * + ****************************************************************/ +/* + * Include needed headers + */ +#include /* predefined types */ +#include /* include unix standard library */ +#include /* IP addresses conversion utiliites */ +#include /* socket library */ +#include /* include standard I/O library */ + +#include "wrappers.h" + +#define MAXLINE 256 +void usage(void); +void EchoClient(FILE * filein, int socket); + +/* Program begin */ +int main(int argc, char *argv[]) +{ +/* + * Variables definition + */ + int sock_fd, i; + struct sockaddr_in serv_add; + /* + * Input section: decode parameters passed in the calling + * Use getopt function + */ + opterr = 0; /* don't want writing to stderr */ + while ( (i = getopt(argc, argv, "h")) != -1) { + switch (i) { + /* + * Handling options + */ + case 'h': + printf("Wrong -h option use\n"); + usage(); + return(0); + break; + case '?': /* unrecognized options */ + printf("Unrecognized options -%c\n",optopt); + usage(); + default: /* should not reached */ + usage(); + } + } + /* *********************************************************** + * + * Options processing completed + * + * Main code beginning + * + * ***********************************************************/ + /* 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(7); /* echo port is 7 */ + /* 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 */ + EchoClient(stdin, sock_fd); + /* normal exit */ + return 0; +} +/* + * routine to print usage info and exit + */ +void usage(void) { + printf("Take daytime from a remote host \n"); + printf("Usage:\n"); + printf(" daytime [-h] [-v] [host in dotted decimal form] \n"); + printf(" -v set verbosity on\n"); + printf(" -h print this help\n"); + exit(1); +} + +void EchoClient(FILE * filein, int socket) +{ + char sendbuff[MAXLINE], recvbuff[MAXLINE]; + int nread; + while (fgets(sendbuff, MAXLINE, filein) != NULL) { + SockWrite(socket, sendbuff, strlen(sendbuff)); + if ( (nread = SockRead(socket, recvbuff, MAXLINE)) == 0) { + perror("Sever read error:"); + exit(-1); + } + recvbuff[nread] = 0; + fputs(recvbuff, stdout); + } + return; +} diff --git a/sources/SimpleEchoTCPServer.c b/sources/SimpleEchoTCPServer.c index 8c0dff8..9611e36 100644 --- a/sources/SimpleEchoTCPServer.c +++ b/sources/SimpleEchoTCPServer.c @@ -8,7 +8,7 @@ * * Usage: echod * - * $Id: SimpleEchoTCPServer.c,v 1.2 2001/06/11 22:15:57 piccardi Exp $ + * $Id: SimpleEchoTCPServer.c,v 1.3 2001/06/12 22:17:22 piccardi Exp $ * ****************************************************************/ /* @@ -129,7 +129,8 @@ void SockEcho(int sockfd) { int nread, nwrite; /* main loop, reading 0 char means client close connection */ - while ( (nread = SockRead(sockfd, buffer, MAXLINE)) != 0) { + while ( (nread = read(sockfd, buffer, MAXLINE)) != 0) { + printf("Letti %d bytes, %s ", nread, buffer); nwrite = SockWrite(sockfd, buffer, nread); } return; -- 2.30.2