select函数使用有关问题。

select函数使用问题。。。Phoenix_静心(540552452)15:40:40s1sockets2socketbinds1binds2listens1listens2f

select函数使用问题。。。
Phoenix_静心(540552452) 15:40:40
s1 = socket 
s2 = socket 
bind s1 
bind s2 
listen s1 
listen s2 

fd_set fd, tmp 

FD_ZERO(&fd) 
FD_SET(s1, fd); 
FD_SET(s2, fd);3

select监听两个端口,如何区分变化的是s1还是s2?

[解决办法]


int select(int nfds, fd_set *restrict readfds,
fd_set *restrict writefds, fd_set *restrict errorfds,
struct timeval *restrict timeout);

如果 select 成功返回,readfds 里面肯定存储了对应的 socket(有变化的,看你的需求,一般是有新连接) ,

 int FD_ISSET(int fd, fd_set *fdset);
用 FD_ISSET 把 s1,s2 分别送到readfds 里面去判断就好了。

FD_ISSET(s1,readfds);
FD_ISSET(s2,readfds);