各位Delphi高手好!
本人目前开发了一个聊天程序(大聊天室),界面是模仿腾讯的(腾讯的QQ的确是功能强大,界面设计及其运行机制具有很高的技术含量,本人设计过程中深有体会)。
在开发服务器端程序时,我没有采用ServerSocket控件,而是用线程负责客户端信息的接收。为了接收不同客户端Socket信息,我认为有两种方法:
一:采用CM_SocketMessage消息绑定于WSAAsyncSelect函数中,有信息到来时触发其消息事件,通过参数可取得其Socket,并读取数据。
二: 在accept循环中每收到一个Socket连接将其加入到链表,采用线程循环扫描
其Socket链表(缺点:占用CPU时间,尽管降低其优先权),发现有数据时就读取。
现在这两种方法都可行,我用的是第二种,问题是哪种方法效率更高。我个人认为采用第一种方法会形成消息队列,而操作系统本身就要处理繁多的消息,这样是否会影响效率。
还有更好的方法吗?请各位同仁发表发表高见!
谢谢!!!
本人目前开发了一个聊天程序(大聊天室),界面是模仿腾讯的(腾讯的QQ的确是功能强大,界面设计及其运行机制具有很高的技术含量,本人设计过程中深有体会)。
在开发服务器端程序时,我没有采用ServerSocket控件,而是用线程负责客户端信息的接收。为了接收不同客户端Socket信息,我认为有两种方法:
一:采用CM_SocketMessage消息绑定于WSAAsyncSelect函数中,有信息到来时触发其消息事件,通过参数可取得其Socket,并读取数据。
二: 在accept循环中每收到一个Socket连接将其加入到链表,采用线程循环扫描
其Socket链表(缺点:占用CPU时间,尽管降低其优先权),发现有数据时就读取。
现在这两种方法都可行,我用的是第二种,问题是哪种方法效率更高。我个人认为采用第一种方法会形成消息队列,而操作系统本身就要处理繁多的消息,这样是否会影响效率。
还有更好的方法吗?请各位同仁发表发表高见!
谢谢!!!
解决方案 »
- Delphi的USB通信問題
- 有哪位大哥帮帮忙,delphi里怎么对地图进行编辑呀?急!急!急!急!急!急!
- 请问有没有好的报表打印控件.请告诉我网址,谢谢
- 小弟想学Delphi请这里的老大们推荐些书。
- 在DELPHI中调用别的开发工具写的DLL(VB)与调用DELPHI本身写的DLL有什么不同吗?
- 有没有能做出IE工具栏样式的控件,显示不完的按钮放在最右边的下拉菜单中?(除了Toolbar2000)
- ribbon中Group的透明问题
- 【50分求】怎么释放封装在dll中的其他类型资源?
- 我用query更新数据时,提示table is read only!,请告述我怎么解决?
- Delphi数据分段查询(一个麻烦问题)
- "相互身份验证失败,该服务器域控制器的密码过期"这是什么问题
- 听说过很多‘BOM’,‘MRP计算’
希望能得有经验的建议和意见