首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络协议 >

怎么保证Socket通讯的可靠性

2013-01-07 
如何保证Socket通讯的可靠性?最近用Silverlight做了一个斗地主棋牌游戏:54竞技馆(www.54jjg.com),不过在这

如何保证Socket通讯的可靠性?
最近用Silverlight做了一个斗地主棋牌游戏:54竞技馆(www.54jjg.com),不过在这个过程中发现,在很偶然的情况下,有些出牌等消息发送到服务器或者服务器发送消息到客户端时,发送方并未报错,但是接收方却没有收到消息。这样会导致客户端和服务器端一些逻辑问题。
诸位大侠,有什么好的办法能确保客户端和服务的TCP消息能够稳定的收发么?
[解决办法]

引用:
最近用Silverlight做了一个斗地主棋牌游戏:54竞技馆(www.54jjg.com),不过在这个过程中发现,在很偶然的情况下,有些出牌等消息发送到服务器或者服务器发送消息到客户端时,发送方并未报错,但是接收方却没有收到消息。这样会导致客户端和服务器端一些逻辑问题。
诸位大侠,有什么好的办法能确保客户端和服务的TCP消息能够稳定的收发么?


服务器和客户端两个TCP socket之间已经有收发可靠性的机制了啊。如果客户端没收到,服务器应该会重发啊。


- 千里孤行
[解决办法]
引用:
现在的问题是:服务器用socket发了,而且发送的过程中没有报错,可是客户端就是没收到消息,很奇怪。这种情况极少出现,不过出现了以后,就会给应用造成比较大的逻辑问题,用户感觉也不好。


基本上大致的路径可以这样画:

数据源-------->服务器socket <=======================>客户端socket ------>客户端界面

TCP协议自己有固有的传输可靠性机制,可以保证从服务端socket到客户端 socket一定可以可靠的发送和接受。一定会收到,不收到就重发。

但数据源到服务器socket,以及 客户端socket到客户端界面,就是你程序自己的事,如果其中存在不可靠因素,导致消息不能收到,那你可以增加重发机制到这两段,或者什么的,以保证可靠性。

- 千里孤行


[解决办法]
引用:
现在的问题是:服务器用socket发了,而且发送的过程中没有报错,可是客户端就是没收到消息,很奇怪。这种情况极少出现,不过出现了以后,就会给应用造成比较大的逻辑问题,用户感觉也不好。


用户一多了之后,是很容易发生这样的情况的
[解决办法]
方案一:TCP连接有个保活机制,通过sokcet可以设置保活时间,保证在短时间内检测出断链...
方案二:设计一个检测机制,两端每隔开0.5s发一个包,如果某一端连续5s没收到报文,则重建socket.

热点排行