gpt4 book ai didi

c++ - recvfrom 函数返回 -1 没有错误

转载 作者:搜寻专家 更新时间:2023-10-31 01:15:00 24 4
gpt4 key购买 nike

标题几乎说明了一切。我有一个接收线程正在等待来自客户端的输入,但是当没有读取任何内容时,它不会返回读取的 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 的错误代码。

附带说明,在调用 recvfrom() 之前不需要填写 sockaddr_in。它为您在 sockaddr_in 中填充有关发件人的信息。 recvfrom() 需要执行的任何信息都是从 SOCKET 句柄中获取的。

关于c++ - recvfrom 函数返回 -1 没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10621508/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com