为什么select返回-1
模仿别人的程序,客户端和服务器通信,但是老是连接上了,信息发送不过去,后来调试的时候是在使用select()的时候它返回了-1,直接跳出了程序,没有发送数据,代码为:
BOOL CDealCMDThread::SOKCET_Select(SOCKET hSocket,int nTimeOut,BOOL bWrite)
{
fd_set fdset;
struct timeval tv;
FD_ZERO(&fdset);
FD_SET(hSocket, &fdset);
tv.tv_sec = nTimeOut;
tv.tv_usec = 0;
int nRes = 0;
if(bWrite)
nRes = select(hSocket + 1, NULL , &fdset, NULL, &tv);
else
nRes = select(hSocket + 1, &fdset, NULL , NULL, &tv);
if(nRes == 0)
{
// DW(_T("SOKCET_Select Time Out"));
return FALSE;
}
if(nRes < 0)
{
int nErr = WSAGetLastError();
// DW(_T("SOKCET_Select Select Error = %d"),nErr);
return FALSE;
}
if(FD_ISSET(hSocket, &fdset))
return TRUE;
return FALSE;
}
为什么nRes的返回值为-1啊,返回-1代表什么出错呢??
请各位帮帮我!
BOOL CDealCMDThread::SOKCET_Select(SOCKET hSocket,int nTimeOut,BOOL bWrite)
{
fd_set fdset;
struct timeval tv;
FD_ZERO(&fdset);
FD_SET(hSocket, &fdset);
tv.tv_sec = nTimeOut;
tv.tv_usec = 0;
int nRes = 0;
if(bWrite)
nRes = select(hSocket + 1, NULL , &fdset, NULL, &tv);
else
nRes = select(hSocket + 1, &fdset, NULL , NULL, &tv);
if(nRes == 0)
{
// DW(_T("SOKCET_Select Time Out"));
return FALSE;
}
if(nRes < 0)
{
int nErr = WSAGetLastError();
// DW(_T("SOKCET_Select Select Error = %d"),nErr);
return FALSE;
}
if(FD_ISSET(hSocket, &fdset))
return TRUE;
return FALSE;
}
为什么nRes的返回值为-1啊,返回-1代表什么出错呢??
请各位帮帮我!
...全文
相关推荐
epoll为什么快
本文详细介绍了epoll原理、工作机制、和select的区别、为什么高效以及epoll事件的两种工作模型。 内容通俗易懂,特别适合初学者学习理解。
ASP中获得Select Count语句返回值的方法
主要介绍了ASP中获得Select Count语句返回值的方法,一般用在统计数据时使用Select Count语句,以此一获得查询到的行数,需要的朋友可以参考下
ajax 返回结果拼装到 select
NULL 博文链接:https://ljm1227134894.iteye.com/blog/1736703
sqlserver存储过程中SELECT 与 SET 对变量赋值的区别
SQLServer中对已经定义的变量赋值的方式用两种,分别是 SET 和 SELECT。对于这两种方式的区别,SQL Server 联机丛书中已经有详细的说明,但很多时候我们并没有注意,其实这两种方式还是有很多差别的。
MYSQL SELECT INTO 和 INSERT INTO SELECT
关于MySQL中“SELECT INTO”和“INSERT INTO SELECT”两种语法的使用与说明。


进程/线程/DLL
