codice:int main(int argc, char *argv[]) { int sockfd; struct sockaddr_in name; fd_set active_fd_set, write_fd_set; int i; struct sockaddr_in servername; size_t size; char command; char buffer[MAXMSG]; char avgstr[8*trhx_sensors]; long int number; struct hostent *h; int st, r; char n; unsigned char d; char m, l; long timevar; /* Open syslog*/ openlog("trhxd",LOG_PID | LOG_NDELAY,LOG_DAEMON); printf("l = %d\n", l); /* Create socket */ sockfd = socket(PF_INET, SOCK_STREAM, 0); if (sockfd < 0) { syslog(LOG_ERR,"main: socket() failed"); exit (1); } //#ifdef DEBUG /*printf("connect = %d\n", connect); printf("LOG_PID = %d\n", LOG_PID); printf("sockfd = %d\n", sockfd); printf("r = %d\n", r); printf("tcpport = %d\n", tcpport); printf("st = %d\n", st); printf("syslog = %d\n", syslog); printf("LOG_ERR = %d\n", LOG_ERR); printf("servername = %d\n", servername);*/ //printf("l = %d\n", l); //printf("buffer = %d\n", buffer); //fflush(stdout); //#endif /* Initialize address */ name.sin_family = AF_INET; name.sin_port = htons (tcpport); /* extabilish connection */ size = sizeof (servername); if(connect(sockfd,(struct sockaddr *)&servername, &size) < 0) { syslog(LOG_ERR,"main: accept() failed"); exit (1); } /* Since the connect call assigns a random address * to the local end of this connectionm let's use * getsockname to see waht it assigned. */ if (getsockname (sockfd,(struct sockaddr *)&servername, &name) <0) { syslog(LOG_ERR,"main: connect() failed"); fprintf(stderr, "%s: unable to read socket address\n", argv[0]); exit (1); } if ((r = read(sockfd, buffer,MAXMSG)) > 0 ) { buffer[r] = 0; } /* Initialize the set of active sockets. */ FD_ZERO (&active_fd_set); FD_SET (sockfd, &active_fd_set); while (1) { write_fd_set = active_fd_set; if (terminator) { close(sockfd); exit(0); } st=select(FD_SETSIZE, &write_fd_set, NULL, NULL, NULL); if (st<0) { sprintf(buffer,"main: select() failed (error code %d)",errno); syslog(LOG_ERR,buffer); exit (1); } else { /*il client invia i dati a server*/ if (write_to_server (i, &command, &n, &d)<0) { close(i); FD_CLR (i, &active_fd_set); } else { switch(command) { case '?': /* Help */ send(sockfd,"?",10,0); if(send(sockfd,(struct sockaddr *)&servername,size, 0) !=size) { sprintf(buffer,"%s%s\r\n"); } read_from_server(i, buffer, strlen(buffer)); //printf("\n Help\n"); break; case 'l': /* Log line & exit */ /*send(sockfd,"l",10,0); if(send(sockfd,(struct sockaddr *)&servername,size, 0) !=size) { sprintf(buffer,"%ld %s", time(NULL), avgstr); } recv(sockfd,(struct sockaddr *)&servername, l,0);*/ sprintf(buffer,"%ld %s", time(NULL), avgstr); read_from_server(i, buffer, strlen(buffer)); close(i); FD_CLR (i, &active_fd_set); buffer[0]=0; //scanf("%d",avgstr[8*trhx_sensors]); break; printf("l = %d", l); fflush(stdout); default: sprintf(buffer,"?\r\n"); break; } if (st) { syslog(LOG_NOTICE,"main: serial I/O failed"); } if (buffer[0]) { read_from_server(i, buffer, strlen(buffer)); } } } }

Rispondi quotando