Pulito ed indentato.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); }

Rispondi quotando