优先插座通信

Ign*_*mez 2 c# sockets

我在移动设备和PC(服务器)之间进行客户端 - 服务器通信.在通信中我有四个插座:其中两个用于发送和接收数据,另外两个用于某种保持活动,因为我需要尽可能快地检测断开连接.

只要连接正常,数据就会毫无问题地传输.但我想建立一些优先级,以确保keep alive(记住:两个套接字)通道始终发送数据,除非服务器 - 客户端之间的连接已经死亡.

我怎样才能做到这一点?

谢谢你的帮助.

Nik*_*sov 5

我会用四个插座来质疑你的设置.

首先,具有单独的连接以便在远程端模具发现时没有给你任何优势,但实际上当"保持活动"连接断开但"数据"连接仍然完好时引入竞争条件.当没有活动时,在相同的数据连接上实现定期心跳.

然后,相同节点之间的两个独立数据连接竞争带宽.网络堆栈通常不会跨连接边界进行优化,因此您获得两倍的TCP开销而无法获得增益.通过相同的TCP连接实现数据交换 - 您将获得更好的吞吐量(可能以小延迟增加为代价,但只有良好的测量才能证明这一点).

最后但并非最不重要的是,四个连接需要四个侦听TCP端口,因此可能在防火墙的某个地方有四个孔.将其减少到单个端口,该防火墙的管理员将永远是您的朋友.