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