我在服务器和插座上使用了使用ObjectiosTreams在网络连接上发送可序列化对象的插座。我正在开发一个基本的财务版本的垄断版本,因此需要发送/确认为发送/接收的数据包。我需要实现自己的数据包丢失观察器,还是已经使用(服务器)插座负责的?

我主要询问在网络大小写期间丢失数据包,而不是完全连接错误。例如,兄弟姐妹在我的路由器和计算机的Wi-Fi适配器之间移动铅板。

http://code.google.com/p/inequity/source/browse/#svn/trunk/src/network可以在网络 - >客户端controller和网络 - >服务器下找到代码

有帮助吗?

解决方案

理论上;是的。无法提供100%的理论保证,即在硬件层上发送的内容以相同的方式在接收端接收。

但是,实际上,如果您使用TCP(传输控制协议),则已经处理了这些东西;您不会放松任何包装。 (另一方面,如果您使用的是UDP(用户数据报协议),这是另一个故事,很可能是您丢失数据包或收到订单的情况)。

只是简要介绍了您的代码,似乎您正在使用多个线程。如果是这样,您必须完全谨慎地同步。看起来很可能已经丢弃了数据包,但是由于程序中的比赛条件,它根本无法处理。 (请记住,例如GUI以自己的线程运行。)

我认为,解决该同步的最佳方法是将网络循环放入一个很小的读/put-on-Syngronized-queue循环中,并在您确定没有其他线程时从队列中捡起收到的数据包干预。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top