我怎么触发不了OnReceive()事件?新手入门,在线等待!

xhywg 2003-08-26 01:38:32
我利用CAsyncSocket派生类编写客户机服务器模型,客户机服务器已经联机成功,也能发送数据让其它测试程序收到,但就是触发不了OnReceive事件,以至于收不到数据。请大家帮帮忙阿!
void CNetSocket::OnReceive(int nErrorCode)
{
if(nErrorCode==0)
m_pDlg->OnReceive();
CAsyncSocket::OnReceive(nErrorCode);
}
...全文
161 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhywg 2003-08-27
  • 打赏
  • 举报
回复
谢谢各位,问题已经解决了!
我加了一句m_sConnectSocket.AsyncSelect(FD_READ|FD_WRITE|FD_OOB);就可以了!
river_side 2003-08-26
  • 打赏
  • 举报
回复
好像要先定义用户消息函数,然后监听接收吧
farfh 2003-08-26
  • 打赏
  • 举报
回复
up
tigerblue 2003-08-26
  • 打赏
  • 举报
回复
重载OnReceive
或自己调用winsock的Receive写一个函数
xhywg 2003-08-26
  • 打赏
  • 举报
回复
我是这样做的阿,如果有数据到达就出发OnReceive(),然后再调用对话框类的OnReceive()进行数据接收和处理!
puyinghua 2003-08-26
  • 打赏
  • 举报
回复
OnReceive()是回调函数, 不用你自己显式调用的, 不用管触发问题, 只要有数据到达, 操作系统自动调用此函数

OnReceive()函数中,用来处理接收数据前的准备工作;你可以放置调用另一函数比如Receive()----这是自定义的, 用于真正处理收到的数据.

而不是象楼主说的, 在里面显式调用
xhywg 2003-08-26
  • 打赏
  • 举报
回复
我服务器端的OnAccept()和OnReceive()是放在一个派生类里,OnAccept()能够触发。
可是我客户端的派生类里只有OnReceive(),也收不到数据啊!
孤必有邻 2003-08-26
  • 打赏
  • 举报
回复
对于C/S通讯的两个程序,通常定义三个CSocket(或其基类)的派生类,比如
服务端:
CListenSocket和CConnectSocket
客户端:
CClientSocket
通常代码是
CListenSocket listen;
...
listen.Create()
listen.Listen()
...
//CListenSocket重载OnAccept
CConnectSocket * connect=new CConnectSocket;
listen.Accept(*connect);
...
//CConnectSocket重载OnReceive()
Receive()
...
//和OnClose()
Close()
不知你是怎么做的(对象是否搞错了)
Healer 2003-08-26
  • 打赏
  • 举报
回复
OnReceive Function 需要你来重载, 这样写上去是没有用的:)
我想这就是问题了,
还有, 你的聊天室如何控制受到的信息啊,
都是MyDialog::OnReceive处理??
几乎同时到达的先后两个数据, 你就不怕前面的没有处理完, 后面的就进入缓冲区了?

18,356

社区成员

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

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