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));
}
}
}
}