recvfrom 函数返回 -1,没有错误
recvfrom function returns -1 with no error
标题几乎说明了一切。我有一个接收线程等待来自客户端的输入,但是当什么都没有读取时,它不是返回 0 字节读取,而是返回 -1 但没有返回任何错误。
任何提示都必须说明为什么这个函数会表现得像这样?
谢谢
编辑:
这是接收代码
sockaddr_in remote;
remote.sin_family = AF_UNSPEC;
remote.sin_addr.s_addr = inet_addr( _host.c_str() );
remote.sin_port = htons( atoi( _port.c_str() ) );
int remoteSize = sizeof(remote);
bytesRead = recvfrom(_os.socket,
(char*)buffer,
bufferSize,
0,(SOCKADDR*)&remote, &remoteSize);
_error = WSAGetLastError();
当我执行时,bytesRead
是 -1,_error
是 0。
当recvfrom()
返回 SOCKET_ERROR
时,WSAGetLastError()
不应该返回 0。 这表明您可能在两次调用之间执行了一些操作,这些操作在读取WinSock的错误代码之前间接清除了WinSock的错误代码。
附带说明一下,在调用recvfrom()
之前,您无需填写sockaddr_in
。 它会为您填写有关发件人的信息sockaddr_in
。 recvfrom()
需要执行的任何信息都是从SOCKET
句柄获取作业。
您可以
尝试的另一件事是使用 SO_ERROR
调用 getsockopt()
来检查特定于套接字的错误(相对于任何线程套接字上的最后一个错误)。
相关文章:
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- C++中是否有任何函数等同于python中字典的get函数?
- 我的代码中有错误,未声明的标识符
- 有没有函数可以在擦除 c++ 中获取 deque.begin() 的 int 值?
- C++ LeetCode #377 的 DP 解决方案中,此代码是否有错误?
- 试图建立银行管理系统,但有错误
- 我试图创建临时对象的方式有错误吗
- 是否有pass函数作为模板参数
- 我的随机生成器是否不工作,或者我决定人/骨架是否击中对手的方式是否有错误
- 编译器错误:函数调用在常量表达式中必须有一个常量值
- Microsoft Visual Studio发现我所有的CUDA设备端函数都有错误
- 错误:函数调用中有两个参数
- 继承默认构造函数在 gcc 中失败并在 clang 中工作,哪个有错误?
- 在c++中有错误的;未实现的构造函数
- OPNET:在OPNET的过程模型中写了一个函数,但有错误
- C ++ porgram 不会运行,我的构造函数是否有错误
- 当设置-fno-elide构造函数时,clang Xcode 4.4.1是否有错误
- 在boost::test中是否有一个函数可以返回错误值
- 错误C2084:函数已经有一个函数体
- 我所有的函数都有错误 C2084:函数'function'已经有一个主体