当前位置: 技术问答>linux和unix
多个客户端使用select的FD_ISSET问题
来源: 互联网 发布时间:2015-05-30
本文导语: 多个客户端,使用select模型,有一个奇怪的问题,我利用FD_SET将多个建立了连接的socket加入到描述符中,发现当任一个socket上有数据select返回后,用FD_ISSET检查时,所有socket都返回TRUE,也就是说只要增经将一个socket加入到描述...
多个客户端,使用select模型,有一个奇怪的问题,我利用FD_SET将多个建立了连接的socket加入到描述符中,发现当任一个socket上有数据select返回后,用FD_ISSET检查时,所有socket都返回TRUE,也就是说只要增经将一个socket加入到描述符中,检查时不管该socket上有没有数据,FD_ISSET都会返回TRUE,请问为什么?代码如下(仿照UNIX网络编程中的例子):
#include
#include
#include
#include
#include
#include
#include
#define MY_PORT 8888
#define MAX_SOCKET 3
int main(int argc ,char **argv)
{
printf("start!rn");
int listen_fd;
int accept_fd[MAX_SOCKET];
struct sockaddr_in client_addr;
int n;
int maxfd = 0;
if((listen_fd = socket(AF_INET,SOCK_STREAM,0))
#include
#include
#include
#include
#include
#include
#include
#define MY_PORT 8888
#define MAX_SOCKET 3
int main(int argc ,char **argv)
{
printf("start!rn");
int listen_fd;
int accept_fd[MAX_SOCKET];
struct sockaddr_in client_addr;
int n;
int maxfd = 0;
if((listen_fd = socket(AF_INET,SOCK_STREAM,0))