为什么Onsend函数发送几次后就不再触发了.

abxialiang 2011-09-09 03:11:17
class MySock : public CAsyncSocket
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;
}

SendData()使用几次后Onsend()就不再反应了.这样就发送不了数据了.请问这是什么原因.
...全文
60 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
abxialiang 2011-09-19
  • 打赏
  • 举报
回复
不得不说,这个帖子本身就是一个杯具
czw9006 2011-09-12
  • 打赏
  • 举报
回复
不是很清楚,
是不是发送的数据在那堵塞着,一直没有处理完呢
abxialiang 2011-09-11
  • 打赏
  • 举报
回复
唉!!
W1nds 2011-09-09
  • 打赏
  • 举报
回复
帮顶了。。。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧