MFC CSocket OnReceive()消息 事件问题

b5651090 2010-06-01 09:08:35
我的程序中同时有CListenSocket、 CNetSocket两个类
一个用于监听:
CListenSocket ListenSocket = new CListenSocket();
ListenSocket->Create(9000);
ListenSocket->Listen();
当Listen到有连接请求时,把连接指定到CNetSocket的对象:
CNetSocket* NewSock = new CNetSocket();
ListenSocket->Accept(*NewSock);
这样,当NewSock收到消息时,就会调用CNetSocke类中的OnReceive()函数了。
但我的 CNetSocket类还有个作用,就创建发出连接的Socket对象(我的程序是服务端、客户端在一起的):
CNetSocket *cSocket=new CNetSocket();
cSocket->Create();
cSocket->Connect(ip,9000);
问题是即使cSocket收到消息了,也不会调用CNetSocke类中的OnReceive()。这是为什么啊?
难道是cSocket和NewSock不能用同一类创建?
...全文
464 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
andyflyrain 2010-10-13
  • 打赏
  • 举报
回复
Vinc 2010-06-02
  • 打赏
  • 举报
回复
不建议在多个线程中使用一个CSOCKET,在线程间传递数据(特别是通信后的清理资源)很麻烦。
【天运子】 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 b5651090 的回复:]
我知道为什么了,因为我的cSocket是在线程中创建的,所以收不到事件消息,
怎么解决这个问题啊?我需要用多线程建多个cSocket连接,怎么让线程中创建的socket收到事件消息啊?
[/Quote]我发你个 类似的源代码把
b5651090 2010-06-02
  • 打赏
  • 举报
回复
我知道为什么了,因为我的cSocket是在线程中创建的,所以收不到事件消息,
怎么解决这个问题啊?我需要用多线程建多个cSocket连接,怎么让线程中创建的socket收到事件消息啊?
yiwusuoyou666 2010-06-02
  • 打赏
  • 举报
回复
如果你的服务器发送数据时成功的话,你的客户端就可以接受到FD_READ事件通知的,当然,这些前提是你必须要先连接成功,呵呵,刚研究过的。

18,356

社区成员

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

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