各位大哥,我怎么才能知道send()函数已经将数据发送出去了?

解决方案 »

  1.   

    不太清楚,帮你up吧。
    send成功返回仅仅表示数据已写入本机的发送缓冲区。如果要确切地知道,大概需要深入底层了吧?
    不知道你为什么一定要确切知道,通常只要send成功返回了,就不太会有问题了,再有问题,更可能是程序其它方面的问题,或者接受方的问题。
      

  2.   

    如果你用的是CAsyncSocket派生,那么它不支持阻塞,发送不成功一般不会成功返回;
    如果是CSocket,你在Connect或是Accept后面用检错函数检查一下,如果没问题,一般是可以Send成功的。
      

  3.   

    int ErrorCode=send(....);
    if (ErrorCode==SOCKET_ERROR) printf("\nSend Error:%d\n",GetLastError());
      

  4.   

    你是什么意思,是不是说数据已经到了对方缓存里,我的方法是设置发送缓冲区大小为0,send返回多少个字节就表示多少个字节已经到了对方缓存里