I had a similar problem before, make sure that you are refreshing your fd_set (second param in select()) for example
fd_set readfds, masterfds;
readfds = masterfds;
select(maxfd+1, readfds, NULL, NULL, NULL);
the comflicting line is "readfds = masterfds" you must put that before select if u want it to work, I mean you need a fd_set for reading, and another for refreshing the first one, this way if you make a FD_SET() you use the masterfds end then you copy it to the one you use for reading. This was my problem, maybe yours is diferent you should post a part of your code to let us see the problem.
I hope I helped you, good luck, Dam.