socket select问题
int listen_id,accep_id; //监听socket,传输socket
int n;
static int currentid = 0;
int fd[MAXCLIENT];
int i,j;
char buffer[BUF_SIZE];
struct sockaddr_in serveraddr,clientaddr; //客户端地址
fd_set rd; //在这儿定义一个保存可读的fd_set
for(i = 0;i < MAXCLIENT;i++)
{
fd = -1;
}
//创建监听socket
listen_id = socket(AF_INET,SOCK_STREAM,0);
if(listen_id < 0)
{
fprintf(stderr,"Create listen socket failure.\n");
exit(1);
}
//设置监听socket
memset(&serveraddr,0,sizeof(serveraddr));
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
serveraddr.sin_port = htons(PORT);
//绑定socket
if(bind(listen_id,(struct sockaddr *)&serveraddr,sizeof(serveraddr))<0)
{
fprintf(stderr,"bind listen socket failure.\n");
exit(1);
}
//监听socket
if(listen(listen_id,MAXCLIENT)<0)
{
fprintf(stderr,"listen the socket failure.\n");
}
//并发处理连接
FD_ZERO(&rd);
int nfds = 0; //将该值放到循环外来定义
while(1)
{
int ret;
nfds = max(nfds,listen_id);
FD_SET(listen_id,&rd);
ret = select(nfds+1,&rd, NULL, NULL, NULL);
if(ret<0)
{
continue;
}
else
{
怎么判断是accept还是recv?
}
}