已经执行到OnSend()函数,但却怎么也收不到服务端发送的信息
编号:QA003776
建立日期: 2001年1月17日 最后修改日期:2001年4月15日
所属类别:
唐凯军:
操作系统:WIN98 WINNT40
编程工具:VC++6.0
问题:ClientTestSock 派生于CAsyncSocket 并与服务端连接成功已经执行到OnSend()函数,但却怎么也收不到服务端发送的信息,似乎根本没有执行到OnReceive(), AfxMessageBox("程序到达OnReceive()!") 也没有显示。也曾将OnSend()删除,直接在OnConnedt()中 CAsyncSocket::AsyncSelect(FD_READ) ,还是不行。请大侠指点!
void ClientTestSock::OnConnect(int nErrorCode)
{
if (nErrorCode==0)
{
m_bConnected=TRUE;
CAsyncSocket::AsyncSelect(FD_WRITE);
}
CAsyncSocket::OnConnect(nErrorCode);
}
void ClientTestSock::OnReceive(int nErrorCode)
{
AfxMessageBox("程序到达OnReceive()!");
CAsyncSocket::OnReceive(nErrorCode);
}
void ClientTestSock::OnSend(int nErrorCode)
{
AfxMessageBox("程序到达OnSend()!");
CAsyncSocket::AsyncSelect(FD_READ);
CAsyncSocket::OnSend(nErrorCode);
}
水平: 刚入门
回答:
服务器端送数据不是靠OnSend函数,是通过Serialize函数对CArchive串行化发送的。具体例子参考MSDN中的一个chat程序。
runbuff的意见:
你的Server端是怎样的?
Client:
在OnConnect中应该调用AsyncSelect(FD_READ);
Server:
在OnSend中应调用Send。
Maker的意见:
CAsyncSocket is not suuport CArchive.
Just CSocket support Carchive .....!!
the sample in MSDN is use CSocket ....
BTW,CSocket is not powerful in binary mode .....
It has so many problem in BIG-5 or 中文(taiwan)
此问题由Adam回答。
| |
|
|
| |
|
|