/* check whether socket is connected. Actually, it is not accurate if the client
* crashs and the server don't know about it because the socket buffer is ready.
* So the return value '0' doesn't mean the socket is really valid. Of course,
* '-1' shows the socket is invalid*/int checksock(int s){fd_set fds;
char buf[2];
int nbread;
FD_ZERO(&fds);
FD_SET(s,&fds);
if ( select()(s+1, &fds, (fd_set *)0, (fd_set *)0, NULL) == -1 ) {
//log(LOG_ERR,"select()(): %s\n",strerror(errno)) ;return -1;}if (!FD_ISSET(s,&fds)) {
//log(LOG_ERR,"select() returns OK but FD_ISSET not\n") ;return -1;}/* read one byte from socket */