Изящно выключить сокет TCP

Я пишу IRC-клиент на C ++, и в настоящее время у меня возникла проблема, когда при выходе я делаю это:

Send("QUIT :Quit\r\n"); // just an inline, variadic send() wrapper
shutdown(m_hSocket, SD_BOTH);
closesocket(m_hSocket);

WSAShutdown();

Однако проблема в том, что сообщение QUIT не отправляется. Я обнюхал пакеты, поступающие от клиента, и фактически это сообщение никогда не отправляется. Я считаю, что это проблема с сокетом, который не сбрасывается, но я понятия не имею, как это сделать, и Google предложил отключить алгоритм Нэгла, но я сомневаюсь в этом это хорошая практика.

Заранее спасибо.

7
задан Saul 17 April 2011 в 21:32
поделиться