当前位置: 技术问答>linux和unix
选择TCP还是UDP?
来源: 互联网 发布时间:2016-03-22
本文导语: 小弟最近做了个小项目. 在服务器上有多个服务程序. 客户端和这些服务程序交互. 除了主服务程序(负责登录等功能)需要保持和客户端长时间连接外 其他服务程序和客户端都是短连接,也就是需要的时候连接,通信完就...
小弟最近做了个小项目.
在服务器上有多个服务程序.
客户端和这些服务程序交互.
除了主服务程序(负责登录等功能)需要保持和客户端长时间连接外
其他服务程序和客户端都是短连接,也就是需要的时候连接,通信完就关闭.
考虑到并发处理,主服务程序采用UDP连接.
但是其他服务采用什么连接,小弟我实在很难决定.
(预计有10W用户并发,每个客户端每5分钟刷新一遍数据(和各服务程序通信),传输的数据在0.1~10K左右)
数据要保证100%正确
采用TCP,传输不怕错包,但是并发建立TCP连接,对服务器资源占用较高
考虑到是短连接,每秒估计也有好几百个TCP连接.
采用UDP,传输需要自己判断包序,判断包是否错误.
采用双线程,一个线程收请求,一个线程处理,处理线程估计会忙的要命,毕竟还要处理重发和错包.
如果网络质量差,那就要重复发很多次,也很耗时间.
想让包能够正确传输,基本上跟TCP一样,自己要实现握手,和TCP比,只不过不用维护连接.
小弟我就不太清楚,在这种情况下,使用TCP比较合适还是UDP比较合适呢?
各位英雄给点建议哦.
多谢啦!!
在服务器上有多个服务程序.
客户端和这些服务程序交互.
除了主服务程序(负责登录等功能)需要保持和客户端长时间连接外
其他服务程序和客户端都是短连接,也就是需要的时候连接,通信完就关闭.
考虑到并发处理,主服务程序采用UDP连接.
但是其他服务采用什么连接,小弟我实在很难决定.
(预计有10W用户并发,每个客户端每5分钟刷新一遍数据(和各服务程序通信),传输的数据在0.1~10K左右)
数据要保证100%正确
采用TCP,传输不怕错包,但是并发建立TCP连接,对服务器资源占用较高
考虑到是短连接,每秒估计也有好几百个TCP连接.
采用UDP,传输需要自己判断包序,判断包是否错误.
采用双线程,一个线程收请求,一个线程处理,处理线程估计会忙的要命,毕竟还要处理重发和错包.
如果网络质量差,那就要重复发很多次,也很耗时间.
想让包能够正确传输,基本上跟TCP一样,自己要实现握手,和TCP比,只不过不用维护连接.
小弟我就不太清楚,在这种情况下,使用TCP比较合适还是UDP比较合适呢?
各位英雄给点建议哦.
多谢啦!!
|
现在的网络来说,udp的通信质量基本可以保证,现在有不少的文件传输工具不都是用udp写的。
但是由于数据量都比较少,即使使用tcp也不会照成太大的负担的。你可以做个线程池,这些可能效果会好些。
但是由于数据量都比较少,即使使用tcp也不会照成太大的负担的。你可以做个线程池,这些可能效果会好些。
|
先用TCP做一下测试,看看到底负荷是多少。
既然要100%正确还是建议用TCP。
既然要100%正确还是建议用TCP。
|
100%正确,应该使用TCP
文件传输工具里使用UDP,可能在上层还有校验机制,而且QQ里传文件还是经常失败的
文件传输工具里使用UDP,可能在上层还有校验机制,而且QQ里传文件还是经常失败的
|
显然TCP.
既然你说了也大都是短时间连接, 资源不是问题.
既然你说了也大都是短时间连接, 资源不是问题.