1

Vista上对winsock的send()函数的阻塞调用是否有任何理由立即返回?它适用于 XP 及以下版本的预期延迟。我想知道这是否与 Vista 的自动调整功能有关。代码:

   char *pBuffer; // pointer to data
   int bytes;  // total size
   int i = 0, j=0;
   while (i < bytes)
   {
    j = send(m_sock, pBuffer+i, bytes-i, 0);
        i+=j;
   }

谢谢,
帕万

4

2 回答 2

3

第一种可能是 send() 失败并返回 SOCKET_ERROR。您的代码无法检测到这一点,您真的应该修复它。

下一个可能性是 send() 不会阻塞。这很正常,只有在传输子系统中没有缓冲区空间时才会阻塞。在这种情况发生之前,您必须抽出几兆字节。

于 2010-03-25T13:21:11.963 回答
1

可能输出缓冲区已满。检查 send() 的返回码

于 2010-03-25T12:27:56.373 回答