views:

136

answers:

0

I created two sockets udp_S, tcp_S (one each for UDP AND TCP).Now I want to wait on select() call until there is any data sent from any UDP client or there is any request for coonection by a TCP client. Here is a brief snippet of my code:

int udp_S,tcp_S;

/*Create sockets using socket()*/

/*Bind address to them using bind()*/

fd_set fd;

FD_ZERO(&fd);

FD__SET(udp_S,&fd);

FD__SET(tcp_S,&fd);

int maxfd=max(udp_S,tcp_S)+1;

retval=select(maxfd,&fd,NULL,NULL,NULL);

if(FD__ISSET(udp_S,&fd)){  /* use recvfrom() to receive data from udp client*/}

if(FD__ISSET(tcp_S,&fd)){/* first using accept() to estblish connection and then using standard recv() send() calls*/}

The problem is that without any request made by any clients my select() call is returning 1 and FD__ISSET(tcp_S,&fd) is also returning 1 after which accept() gives accept error.