18,356
社区成员
发帖
与我相关
我的任务
分享
void MySock::OnSend(int nErrorCode)
{
if (m_nCurrentSendLength > 0)
{
int nSendResult = Send(&m_chSendBuf[m_nCurrentSendPos], m_nCurrentSendLength);
m_nCurrentSendPos+=nSendResult;
if (nSendResult == SOCKET_ERROR || nSendResult == 0)
{
Close();
AfxMessageBox("网络数据发送失败,请检查当前网络是否正常0!",MB_ICONINFORMATION);
}
else if (nSendResult < m_nCurrentSendLength)
{
AsyncSelect(FD_READ | FD_WRITE | FD_CLOSE);//事件通知
}
else
{
m_nCurrentSendLength = 0;
m_nCurrentSendPos=0;
AsyncSelect(FD_READ | FD_WRITE | FD_CLOSE);//事件通知
}
}
else
{
m_pMainDlgWnd->EventFocusProcess(WM_USER_ONSEND, NULL);
}
AsyncSelect(FD_READ /*| FD_WRITE*/ | FD_CLOSE);//事件通知
CAsyncSocket::OnSend(nErrorCode);
}
BOOL MySock::SendData(const BYTE* buffer, int length)
{
if (length > MAX_SEND_BUF || m_nCurrentSendLength != 0)
{
return FALSE;
}
memcpy_s(m_chSendBuf, MAX_SEND_BUF, buffer, length);
m_nCurrentSendLength = length;
AsyncSelect(FD_WRITE);//事件通知
return TRUE;
}