.net - TCP星型网络对等连接策略

标签 .net sockets tcp

我编写的网络应用程序与参与系统的机器列表 (N) 中的 N-1(本身)其他机器进行 TCP 通信。

在应用程序启动时,应用程序当前会在尝试连接到其每个对等系统之前选择一个随机延迟时间(1000-3000 毫秒)

如果机器 1 尝试连接到机器 2,同时机器 2 正在尝试连接到机器 1。目前我只是放弃两个连接,再次重新选择随机时间(100-500 毫秒)并重新尝试连接。

每台机器最终都与其他机器建立了连接,系统运行正常,但我在想是否有更好的方法来解决这种情况?

最佳答案

你有很多选择。

打破联系的通常方法是使用 IP。换句话说,如果A连接到B就像B连接到A一样,那么IP较低的那个可以取消它的客户端。

更一般地说,最好避免让每台机器相互通信,因为连接数量增长得惊人。一个好的折衷方案是使用树结构。例如,二叉树意味着每台机器只负责连接到另外两台机器,并且只会被一台机器连接到。其他拓扑在效率和冗余之间提供了不同的平衡,因此请查看有关该主题的相关文献。

关于.net - TCP星型网络对等连接策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3636520/

相关文章:

c# - 有没有直接的方法将 Size 或 Point 乘以一个数字?

c# - 将 Windows 窗体移植到 .Net Standard 2.0

android - 蓝牙创建套接字错误

nginx - Nginx 可以使用 SSL 终止进行 TCP 负载平衡吗?

c# - 如何在所描述的创建 C++ .Net dll 的技术中记录函数?

.net - C# 中使用 Task 和 Task<TResult> 有什么区别

java服务器http服务器收到来自Chrome的空请求

C# 异步套接字 BeginSend

在 Ruby 中通过 TCP 发送后,JSON 不再可解析

java - Java 中的 MQTT 客户端 - 在线程中启动我的监听器