使用Select()并返回“无错误”错误

时间:2012-02-27 19:31:21

标签: c++ select windows-xp errno

我在使用Select()确定何时可以在套接字上读取数据时遇到一些问题。我希望我连接的套接字没有数据,因此select可以返回超时或0值。相反,我得到-1值,消息是“错误:没有错误。”

我的代码与此示例非常相似:https://beej.us/guide/bgnet/html/multi/selectman.html

我在这里读过几次select()文档:msdn.microsoft.com/en-us/library/windows/desktop/ms740141(v = vs.85).aspx

任何想法都将不胜感激。谢谢!

细节:C ++,Win-XP,Microsoft Visual C ++ 2010

1 个答案:

答案 0 :(得分:3)

您正在将套接字添加到fd_set结构之前实际创建套接字:

FD_SET(s, &readfds);
// (...)
int iConnected = ConnectToHost(PortNum, IpAddy);
//^ This actually calls: s = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);

因此,您要向fd_set添加无效套接字。在执行此操作之前创建套接字:

int iConnected = ConnectToHost(PortNum, IpAddy);
//(...)
FD_SET(s, &readfds);