社区
网络编程
帖子详情
如何象CSocket类那样使自定义的套接字类具有消息机制?
bdove
2003-08-24 11:36:57
我想自定义一个套接字类,想要他有消息处理机制,就象CSocket类那样。
但是如何才能使WSAAsyncSelect()函数捕获消息并交给消息处理函数??
...全文
75
19
打赏
收藏
如何象CSocket类那样使自定义的套接字类具有消息机制?
我想自定义一个套接字类,想要他有消息处理机制,就象CSocket类那样。 但是如何才能使WSAAsyncSelect()函数捕获消息并交给消息处理函数??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
smch
2003-08-31
打赏
举报
回复
反正俺总是使用raw socket。也就那么几步。
bdove
2003-08-31
打赏
举报
回复
多谢,原来我想自己封装一个类,也用消息机制,后来我决定改用事件。
谢谢各位的帮忙,我再自己仔细研究一下,不明白处,再向你们请教!
bdove
2003-08-30
打赏
举报
回复
CSocket中的消息是其中封装的静态窗口所发出来的,很容易收不到消息或者过多而出错的!
ahao
2003-08-30
打赏
举报
回复
用消息==用CSocket??
bdove
2003-08-30
打赏
举报
回复
我讨厌用窗口的消息机制,一旦消息阻塞,会被他整死,现在我碰上的问题想试试用事件来解决,但愿不会象消息那样!
Windows的消息机制不是那么好用,用TCP/IP,CSocket类,如果客户一次发的请求过多,消息窗口就会出错.
ahao
2003-08-30
打赏
举报
回复
用窗口是最简单的,其他模型必须用线程,必须处理同步
bdove
2003-08-30
打赏
举报
回复
我知道WSAAsyncSelect()需要一个窗口,
但是我现在想不用WSAAsyncSelect()这个函数,想用WSAEventSelect()来做,这个是不需要窗口的,但是不清楚如何做!
请指教!
Skt32
2003-08-30
打赏
举报
回复
一个 Winsock API 打包类CNetworking 详细信息 < WinSock >
这是个基于网络(包括Winsock API和非Winsock API)的C++类CNetworking ,用它可以发送、接收、连接、断开和获取对方端口各种不同的信息。与这个类的旧版本相比,新版本的主要优点是完全将连接对象化,不需要窗口就可以处理网络消息,通过定义回调函数或事件即可,甚至连通知消息都可以不用。包含有文档说明。
http://www.vckbase.com/code/downcode.asp?id=1464
ahao
2003-08-30
打赏
举报
回复
代码不能给,因为和公司有保密协议,你说的问题不太可能是消息队列溢出的问题,你多了解一些socket的实现就知道了,我的实现和MFC的CAsyncSocket是类似的,MFC的实现用的是winsock1.0,虽然宣称CAsyncSocket是异步模式,但其中用的很多函数都是同步的。自己封需要写一个窗口类,用SDK方式,只需要处理socket消息,同一个线程中创建的socket类实例共享一个窗口实例,所有的同步操作都用winsock2.2版本的异步版本替换,就这么简单。类设计上来说,不要象MFC一样把OnReceive等函数写成虚函数,这样不利于对代理和加密等功能的透明支持,而应该用类似模板方法模式一样对用户隐藏这一层,暴露另外一套可控制的虚函数。
bdove
2003-08-30
打赏
举报
回复
CSocket本身就先天不足,这是事实,出事溢出消息队列,也不奇怪!
我是在做性能测试时,发现的这个问题,我在不到一毫秒内,就发送超过500个请求,就出现了问题
对了,能否把你封装的类给我参考参考!先谢谢了!
depuw@163.com
ahao
2003-08-30
打赏
举报
回复
我从来不用CSocket,因为它先天不足,我用自己封的基于windows消息的socket类,我用它作了很多client端的应用,一直工作得很好。如果是server端,可以考虑用IOCP,但我实在想像不出来,你做的什么应用,能让socket收到的消息多到溢出消息队列了或者象你说的收不到消息,如果是,那99%的可能是你的设计或代码的问题。
bdove
2003-08-30
打赏
举报
回复
不信,你自己试试吧!
我反正是领教过它了!
ahao
2003-08-30
打赏
举报
回复
凭什么说是csocket出错,不是你自己乱写?
“很容易收不到消息或者过多而出错”这样的说法你有什么根据
不录
2003-08-29
打赏
举报
回复
WSAAsyncSelect需要窗口hWnd一起协调才行,在MFC中,使用了一个CSocketWnd类来处理套接字窗口,你可以看看sockcore.cpp文件,在VC的MFC中的SRC文件夹下。
bdove
2003-08-29
打赏
举报
回复
能给我一个WSAEventSelect的例子吗?
kunjun_oy
2003-08-27
打赏
举报
回复
WSAAsyncSelect要和窗口过程绑定,支持消息,比较麻烦,CAsyncSocket即用此实现。
WSAEventSelect和WSAAsyncSelect类似,它是用事件方式,相对简单一些。
自己写Socket类,考虑用第二种方法。
masterz
2003-08-24
打赏
举报
回复
你看看CSocket的源码啊
也可以参考http://www.codeproject.com/internet/casyncsocketex.asp
joinrry
2003-08-24
打赏
举报
回复
运用socket I/O端口模型
1、select
2、异步选择端口
3、事件选择端口
4、重叠端口
5、完成端口
具体参考《windows网络编程》一书,最经典的网络编程书籍
flinming
2003-08-24
打赏
举报
回复
up
基于Windows
套接字
的网络编程(MFC)
从C
Socket
编程模型知道,服务器端需要两种
套接字
,一个用来侦听连接请求,一个用来与请求连接的
套接字
建立连接。因此,利用
类
向导为程序添加两个C
Socket
和。下面在
套接字
类
里加入对话框
类
信息。1然后在两个
套接字
类
...
MFC网络编程2——异步
套接字
从上一节()中,我们了解了网络的部分基础知识以及
套接字
的使用,这一节,我们学习异步
套接字
的使用。Windows
套接字
在两种模式下执行I/O操作,阻塞模式和非阻塞模式。在阻塞模式下,在I/O操作完成前,执行操作的...
Windows
套接字
WSAAsyncSelect
1.Windows
套接字
在两种模式下执行I/0操作:阻塞模式和非阻塞模式。在阻塞模式下,在I/0 操作完成之前,执行操作的Windows函数会一直等待下去,不会立即返回(将控制权交换给主程序),如果这时候网络上没有数据,...
.基于事件
套接字
集合的select模型
1.基于事件
套接字
集合的select模型select(选择)模型是Winsock中最常见的I/O模型。之所以称其为“select模型”,是由于它的“中心思想”...select模型已集成到Winsock 1.1中,它使那些想避免在
套接字
调用过程中被无辜
套接字
I/O模型
目录 select/poll模型 select poll: epoll/kqueue libevent boost::asio/ACE/muduo 以下为Windows特有 WSAAsyncSelect/WSAEventSelect WSAAsyncSelect WSAEventSelect ...1.创建
套接字
2.传输数...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章