CAnsySocket很急的问题[以下问题以源码说明最好,小弟不胜感激]
1.我如果发送大量的数据?如400MB,send好像放送的大小是有限的吧...
如果要分包数据,我得如何作?2.我在
服务器方:
CString msg = "aaaabbbb";
pCC->Send((char*)(LPCTSTR)msg,msg.GetLength());
msg="ccccdddd"
pCC->Send((char*)(LPCTSTR)msg,msg.GetLength()); 客户端:
void CL::OnReceive(int nErrorCode)
{
char buf[4];
int iLen=Receive(buf,4);
buf[iLen]='\0';
AfxMessageBox(buf);
CAsyncSocket::OnReceive(nErrorCode);
}
服务器放出信息后客户端会多次连继触发OnReceive
第一次:收到"dddd"
第二次:收到"cccc"
第三次:收到"bbbb"
第四次:收到"aaaa"
并没有区分开是在服务方有两次send.
1.我如果发送大量的数据?如400MB,send好像放送的大小是有限的吧...
如果要分包数据,我得如何作?2.我在
服务器方:
CString msg = "aaaabbbb";
pCC->Send((char*)(LPCTSTR)msg,msg.GetLength());
msg="ccccdddd"
pCC->Send((char*)(LPCTSTR)msg,msg.GetLength()); 客户端:
void CL::OnReceive(int nErrorCode)
{
char buf[4];
int iLen=Receive(buf,4);
buf[iLen]='\0';
AfxMessageBox(buf);
CAsyncSocket::OnReceive(nErrorCode);
}
服务器放出信息后客户端会多次连继触发OnReceive
第一次:收到"dddd"
第二次:收到"cccc"
第三次:收到"bbbb"
第四次:收到"aaaa"
并没有区分开是在服务方有两次send.
这样客户端就可以区分.
第一个问题,是不是只是把缓冲区设大一些?
如有人回答,可否给我一份答案.
[email protected]!
以后有问题可以联系!
只需自己设定合适的缓冲区,不必理会系统如何处理。
第二问:
对服务器方的一次Send(),客户端可能会多次OnReceive(),你可以不用管他,只需将每次OnReceive()的数据拼在一起即可。至于什么时候结束,应该自己设定一个标志,客户端收到该标志后即表明传输完毕。
另:你给出的结果与你的程序不符。