选择TCP还是UDP?

TopEsk 2008-05-31 08:59:29
小弟最近做了个小项目.
在服务器上有多个服务程序.
客户端和这些服务程序交互.

除了主服务程序(负责登录等功能)需要保持和客户端长时间连接外
其他服务程序和客户端都是短连接,也就是需要的时候连接,通信完就关闭.

考虑到并发处理,主服务程序采用UDP连接.

但是其他服务采用什么连接,小弟我实在很难决定.

(预计有10W用户并发,每个客户端每5分钟刷新一遍数据(和各服务程序通信),传输的数据在0.1~10K左右)
数据要保证100%正确

采用TCP,传输不怕错包,但是并发建立TCP连接,对服务器资源占用较高
考虑到是短连接,每秒估计也有好几百个TCP连接.

采用UDP,传输需要自己判断包序,判断包是否错误.
采用双线程,一个线程收请求,一个线程处理,处理线程估计会忙的要命,毕竟还要处理重发和错包.
如果网络质量差,那就要重复发很多次,也很耗时间.
想让包能够正确传输,基本上跟TCP一样,自己要实现握手,和TCP比,只不过不用维护连接.

小弟我就不太清楚,在这种情况下,使用TCP比较合适还是UDP比较合适呢?


各位英雄给点建议哦.
多谢啦!!
...全文
263 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dai_weitao 2008-06-02
  • 打赏
  • 举报
回复
显然TCP.
既然你说了也大都是短时间连接, 资源不是问题.
Erorr 2008-06-01
  • 打赏
  • 举报
回复
100%正确,应该使用TCP
文件传输工具里使用UDP,可能在上层还有校验机制,而且QQ里传文件还是经常失败的
dingyilong 2008-06-01
  • 打赏
  • 举报
回复
先用TCP做一下测试,看看到底负荷是多少。
既然要100%正确还是建议用TCP。
cceczjxy 2008-05-31
  • 打赏
  • 举报
回复
现在的网络来说,udp的通信质量基本可以保证,现在有不少的文件传输工具不都是用udp写的。

但是由于数据量都比较少,即使使用tcp也不会照成太大的负担的。你可以做个线程池,这些可能效果会好些。

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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