利用CArchive与csocket绑定进行进行网络传输。
服务器端的 OnReceive中的代码如下: cTransObject.Serialize(*m_pInAr); while(!(m_pInAr->IsBufferEmpty()))
{
cTransObject.Serialize(*m_pInAr);
}当传输数据小的时候一切正常。
启动100个client与服务器连接。每个client每秒向服务器发送10个包,每个包的大小为1k,运行一段时间后,而server的OnReceive不再触发,client的发送包阻塞,
请问各位高手有什么解决办法吗??
服务器端的 OnReceive中的代码如下: cTransObject.Serialize(*m_pInAr); while(!(m_pInAr->IsBufferEmpty()))
{
cTransObject.Serialize(*m_pInAr);
}当传输数据小的时候一切正常。
启动100个client与服务器连接。每个client每秒向服务器发送10个包,每个包的大小为1k,运行一段时间后,而server的OnReceive不再触发,client的发送包阻塞,
请问各位高手有什么解决办法吗??
解决方案 »
- vs2008 控件属性中的caption 中文,运行后显示??
- 怎么往一个RichEditCtrl控件中插入文本而不影响之前已有的文本格式
- 结构体里如何使用CString型变量
- 请问各位达人:怎样在对话框应用程序界面中添加BMP位图按钮?
- 我在单文档应用程序中创建了一个弹出对话框,里面放了一些控件,我在对话框的OnCreate函数中使用GetDlgItem(IDC_PROXYIP)->EnableWindow(
- 怎样制作启动盘?
- 请问标准C里边,每个函数的参数的最大个数是多少啊!!谢谢!!
- 小弟初学,请大家关照
- 这个错误怎么解决?
- 使用mscomm控件,如何实现多线程?
- 如何使closesocket断开后不出现time_out连接??(请高手回答,谢谢)
- 我是新手,请帮忙~!
Make sure there is data in the socket's buffer using CAsyncSocket::IOCtl() before attempting to receive.
void CMySocket::OnReceive(int nErrorCode)
{
// TODO: Do some error handling on nErrorCode DWORD dwBytes;
VERIFY(IOCtl(FIONREAD, &dwBytes));
if (0 == dwBytes) // if nothing to read, return
return; do
{ // Read your data from your CArchive object CString strData;
m_pMyArchive >> strData; } while(!m_pMyArchive->IsBufferEmpty());
}
for more details ,see KB articles
FIX: Using CSocket w/ CArchive Causes Block from Extra FD_READ
ID: Q138694