代码之家  ›  专栏  ›  技术社区  ›  ivymike

对vista上的winsock send()函数的阻塞调用是否有任何理由立即返回?

  •  1
  • ivymike  · 技术社区  · 15 年前

    对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;
       }
    

    谢谢,
    帕万

    2 回复  |  直到 15 年前
        1
  •  3
  •   Hans Passant    15 年前

    第一种可能是send()失败并返回socket_错误。你的代码检测不到,你 真的? 应该解决这个问题。

    下一种可能是send()没有阻塞。这很正常,只有在传输子系统中没有缓冲区空间时才会阻塞。在那之前你得抽几兆字节。

        2
  •  1
  •   SteelBytes    15 年前

    可能外面的缓冲区已经满了。检查send()返回的代码