socket通讯的一些疑问

X-i-n 2016-06-27 11:08:04
最近在借一个项目学习socket通讯,场景是客户端隔一段时间向服务器发送消息(可能是1个钟头一条,可能是一秒钟一条,不固定频率),然后服务器返回结果。(因为只需要提供接口,所以客户端是无法控制的)
因为服务器需要返回结果,UDP处理起来会复杂很多,所以用了TCP。
另外因为发送消息的频率不固定,并且每次发送的内容没有关联,所以打算服务器返回结果以后马上断开(这样的话,客户端需要自己处理一下异常)
现在对于这个流程把握不好:服务器返回结果以后马上断开并不是一个很友善的处理方式,但是在这个场景里,客户端是不可控的,又没有办法将断开的时机交给客户端,还有其它更好的处理方法吗?
...全文
115 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fungchou 2016-06-27
  • 打赏
  • 举报
回复
可以长连接加超时方式。 客户端发送完一条消息以后,不立刻断开连接,而是设置一个超时,例如120秒,如果在这个时间内,没有再发送消息,就断开连接。服务器同样逻辑。 这个超时时间可以根据业务逻辑再进行调整,取得一个最优值。
wanghui0380 2016-06-27
  • 打赏
  • 举报
回复
???客户端自己发了自己断就是,干嘛是服务器断??
xuzuning 2016-06-27
  • 打赏
  • 举报
回复
客户端在收到服务端返回的信息后,向服务端发出确认信息,然后两边断开连接
xdashewan 2016-06-27
  • 打赏
  • 举报
回复
引用 2 楼 Runnerchin 的回复:
这个接口本身已经有web service 和 http 版本了,socket版本作为他们的补充,因为有些场景http和web service 覆盖不到。
好吧,socket服务端本身是可以主动断开与某一客户端的连接的,所以主动切断没有问题
X-i-n 2016-06-27
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
一定要用socket吗,你的这个需求基本都是短连,我认为使用wcf或者webservice就可以了,并不一定要用socket
这个接口本身已经有web service 和 http 版本了,socket版本作为他们的补充,因为有些场景http和web service 覆盖不到。
xdashewan 2016-06-27
  • 打赏
  • 举报
回复
一定要用socket吗,你的这个需求基本都是短连,我认为使用wcf或者webservice就可以了,并不一定要用socket
X-i-n 2016-06-27
  • 打赏
  • 举报
回复
感谢各位热心解答。 看起来长连接加超时的方式更合适。 我描述的功能只是一个接口,客户端不在我的控制范围,没有办法保证对方的规范操作,所以只能从服务器断开。 再次感谢

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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