要开发一个支持上千个终端的通讯服务器程序,选用哪种套接字i/o模型比较好?

xiyu 2006-02-16 12:09:42
是上千个GPRS终端,要实时在线。
看有关资料有五种类型的套接字I / O模型: s e l e c t(选择)、W S A A s y n c S e l e c t(异步选择)、W S A E v e n t S e l e c t(事件选择)、o v e r l a p p e d(重叠)以及completion port(完成端口)。
原来想选用WSAEventSelect方式,但好像一个工作者线程最多支持64个终端,假如想让这个模型同时管理不止6 4个套接字,必须创建额外的工作者线程,这样会不会增加编程的复杂度?完成端口模型编程的复杂度会比事件选择模型复杂多少?完成端口模型能不能支持UDP方式?如何支持?多谢
...全文
165 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sevencat 2006-02-17
  • 打赏
  • 举报
回复
效率好坏无所谓,能完成需要的任务就可以了。没必要太追求过分高效。
xiyu 2006-02-17
  • 打赏
  • 举报
回复
楼上各位:有哪位做过类似的连接上千个终端的实际项目?用的是哪种模型?能比较一下效率能相差多少么?
To:sevencat(七猫) 你用Select模型做过连接这么多个终端的项目么?和完成端口模型效率能差多少?比方说完成端口能连接1000个终端的话Select能连接多少终端?
多谢
Hylas 2006-02-17
  • 打赏
  • 举报
回复
其实关键不是在与用什么模式;而是在于你的设计。
举几个例子,我一个同事用delphi 的控件做的可以支持上千个Tcp
另外一个同事用VC做的,估计是用W S A E v e n t S e l e c t ,也能支持900个
但不知道什么原因上不了900,就卡这里了。

用UDP你还要保证数据完整性,
没有速度上要求的话,可以用这个,然后用普通的socket就可以了。如果想速度快点,就用TCP, 这个最好用完成,这样支持的连接数多些。开发难度也差不多吧。
在速度上,不是我说反了, 原因在于确保UDP完整不丢数据。
我也是做gprs有关通信的;可以一起探讨探讨
DentistryDoctor 2006-02-16
  • 打赏
  • 举报
回复
http://www.codeproject.com/internet/
striking 2006-02-16
  • 打赏
  • 举报
回复
completion port(完成端口)。
可以支持udp
zdleek 2006-02-16
  • 打赏
  • 举报
回复
楼主做的是手机应用吗
sevencat 2006-02-16
  • 打赏
  • 举报
回复
select也没啥问题。完成端口开发成本和周期稍高了些。还是select开发起来快些。
BTW:UDP完全没必要用啥完成端口。
rageliu 2006-02-16
  • 打赏
  • 举报
回复
完成端口

18,356

社区成员

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

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