codice:
#include "basic.h"

#define MAX(uno, due) ((uno) > (due))

void client_somma(FILE *fp, int sockfd) {

	int maxfdl;
	fd_set rset;
   char sendline[MAXLINE], sendline2[MAXLINE], recvline[MAXLINE];
   int n;
   char * str = (char*) malloc(MAXLINE);

   FD_ZERO(&rset);
   
   for( ; ; ) {

      FD_SET(fileno(fp), &rset);
      FD_SET(sockfd, &rset);

      maxfdl = MAX(fileno(fp), sockfd) + 1;
   
      if( select(maxfdl, &rset, NULL, NULL, NULL) < 0 )
         err_sys("select error");

      if( FD_ISSET(sockfd, &rset) ) {
         if ( (n = reti_readline(sockfd, recvline, MAXLINE)) < 0) {
            if( errno == EPIPE ) {

               printf("str_cli: server terminated prematurely\n");
               break;

            }
            else {

               printf("errore %d\n", errno);
               err_sys("readline error");
            }
         }
         if (n == 0)
            err_quit("str_cli: server terminated prematurely");

         fputs(recvline, stdout);

      }

      if( FD_ISSET(fileno(fp), &rset) ) {

         bzero(str, strlen(str));
/* if( fgets(sendline, MAXLINE, fp) == NULL)
      return;

   if( fgets(sendline2, MAXLINE, fp) == NULL)
      return;*/

         scanf("%s",&sendline);
         scanf("%s",&sendline2);
         strncat(str,sendline, strlen(sendline));
         strncat(str," ", 1);
         strncat(str,sendline2, strlen(sendline2));
         strncat(str, "\n", 1);

         if( (reti_writen(sockfd, str, strlen(str))) < 0)

            err_sys("write error");

      }
	}
}

int main(int argc, char **argv) {

   int sockfd, n;
   struct sockaddr_in servaddr;

   if (argc != 2)
      err_quit("usage: client <IPaddress>");

   if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
      err_sys("socket error");

   bzero(&servaddr, sizeof(servaddr));
   
   servaddr.sin_family = AF_INET;
   servaddr.sin_port = htons(PORT); /* echo server con select */
   
   if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)
      err_quit("inet_pton error for %s", argv[1]);

   if (connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0)
      err_sys("connect error");

   client_somma(stdin, sockfd); /* svolge tutto il lavoro del client */

   exit(0);

}
Pulito ed indentato.