如题

解决方案 »

  1.   

    用GetLastError()获得错误代码,看看是什么错误
      

  2.   

    我发现是No buffer space available,因为我连续发了很多包,这个问题该如何解决呢?
      

  3.   

    发送接收后,加入Sleep(1000)延时
      

  4.   

    判断发送是否成功.
    int nSend = sendto(....)p
    if( nSend == SOCKET_ERROR )
    {
       // error operation....
    }
      

  5.   

    发送缓冲溢出了。
    以下代码,在缓冲溢出的情况下尝试发送3次,可以把sleep的数值改大一些
    for(int i = 0; i<3; i++)
    {
      int nSend = sendto(....)
      if( nSend == SOCKET_ERROR )
      {
        if(  WSAGetLastError() == WSAENOBUFS )
          sleep(100);
      }
      else
        break;
    }