Sau*_*aul 7 c++ sockets irc tcp winsock
我正在用C++编写一个IRC客户端,目前我遇到了一个问题,退出后,我做了:
Send("QUIT :Quit\r\n"); // just an inline, variadic send() wrapper shutdown(m_hSocket, SD_BOTH); closesocket(m_hSocket); WSAShutdown();
但是,问题是没有发送QUIT消息.我嗅到了来自客户端的数据包,实际上这条消息从未发送过.我认为这是套接字没有被刷新的问题,但我不知道如何做到这一点,谷歌建议禁用Nagle算法,但我怀疑这是一个好习惯.
提前致谢.
首先,您应该检查以下内容的返回值send
:您尝试发送的数据是否实际被网络堆栈接受?(一般来说,这应该在每次send
通话后进行,而不仅仅是在这种情况下).
假设数据被接受,那么AFAIK应该通过调用实际传输shutdown
.您可以尝试使用SO_LINGER
它来查看它是否有所不同,请参阅MSDN上的Graceful Shutdown,Linger Options和Socket Closure.
归档时间: |
|
查看次数: |
6664 次 |
最近记录: |