send()发送了消息之后,如何避免好服务器的回应

send()发送了消息之后,如何处理好服务器的回应?
C/C++ code

void CChatDlg::OnClose()
{
    send(g_ClientSocket, (char*)&head, sizeof(head), 0);
    send(g_ClientSocket, theApp.m_strUserName.GetBuffer(0), head.m_StrLen, 0);
    WSACleanup();

    CDialog::OnClose();
}




当客户端用户点击关闭按钮的时候,会连续调用两个send(),通知服务器“某某下线”
但由于网络传输的速度问题,服务器往往还没接到这个send()消息,WSACleanup()就被执行了,并且程序随之关闭。
这样的话,服务器就收不到该客户端的send()消息了。

那这种情况要怎么处理?即send()之后,如何控制程序,让他收到服务器的响应后再执行下去。
用bool变量控制?

------解决方案--------------------
看一下setsockopt这个接口