-/* TCP_echo1.c
+/* TCP_echo.c
*
* Copyright (C) 2001-2003 Simone Piccardi
*
*/
/****************************************************************
*
- * Program ElemEchoTCPClient.c
+ * Program TCP_echo.c
* Simple TCP client for echo service (port 7)
*
* Author: Simone Piccardi
*
* Usage: echo -h give all info's
*
- * $Id: TCP_echo.c,v 1.2 2003/06/23 18:48:04 piccardi Exp $
+ * $Id: TCP_echo.c,v 1.8 2003/08/17 23:03:44 piccardi Exp $
*
****************************************************************/
/*
#include <arpa/inet.h> /* IP addresses conversion utiliites */
#include <sys/socket.h> /* socket library */
#include <stdio.h> /* include standard I/O library */
+#include <errno.h> /* include error codes */
+#include <string.h> /* include erroro strings definitions */
#define MAXLINE 256
void usage(void);
exit(1);
}
}
- /* read daytime from server */
+ /* do read/write operations */
ClientEcho(stdin, sock);
/* normal exit */
return 0;
void ClientEcho(FILE * filein, int socket)
{
char sendbuff[MAXLINE+1], recvbuff[MAXLINE+1];
- int nread;
+ int nread, nwrite;
while (fgets(sendbuff, MAXLINE, filein) != NULL) {
- FullWrite(socket, sendbuff, strlen(sendbuff));
- nread = FullRead(socket, recvbuff, strlen(sendbuff));
+ nwrite = FullWrite(socket, sendbuff, strlen(sendbuff));
+ if (nwrite < 0) {
+ printf("Errore in scrittura: %s", strerror(errno));
+ return;
+ }
+ nread = read(socket, recvbuff, strlen(sendbuff));
+ if (nread < 0) {
+ printf("Errore in lettura: %s\n", strerror(errno));
+ return;
+ }
+ if (nread == 0) {
+ printf("EOF sul socket\n");
+ return;
+ }
recvbuff[nread] = 0;
- fputs(recvbuff, stdout);
+ if (fputs(recvbuff, stdout) == EOF) {
+ perror("Errore in scrittura su terminale");
+ return;
+ }
}
return;
}