- 论坛徽章:
- 0
|
我想实现非阻塞Socket通信,但是select却总返回0,不知道到底是哪个环节写错了,请高手指教
下面是部分代码,前面已经实现了socket、bind和listen:
TOut.tv_sec = 2;
TOut.tv_usec = 2;
//设置监听端口
FD_ZERO(&ReadFds);
FD_ZERO(&ErrFds);
FD_SET(g_iSockfd, &ReadFds);
iReturn = select(g_iSockfd + 1, &ReadFds, NULL, NULL, &TOut);
if (iReturn <= 0)
{
writelogf(gManageLogFile, 1, "<WaitChangeChannels>select函数调用错误!");
return -1;
}
if (!FD_ISSET(g_iSockfd, &ReadFds))
{
writelogf(gManageLogFile, 1, "<WaitChangeChannels>没有收到新的连接!");
return -10;
}
if ((iNewSockfd = accept(g_iSockfd,(struct sockaddr*)&AgentAddr, &iSinSize)) == -1)
{
writelogf(gManageLogFile,1,"<WaitChangeChannels>The link is come from %s.",inet_ntoa(AgentAddr.sin_addr));
if(errno == EINTR)
{
return -1;
}
return -1;
[ 本帖最后由 xyf1949 于 2006-6-20 15:19 编辑 ] |
|