我正在寻找一种简单的方法来模拟仲裁应用程序以进行测试。这个想法是创建三个独立的节点(在三台不同的计算机上),这些节点将作为我正在测试的 C# 服务器套接字的客户端工作。假设我正在尝试建立 4 个客户端-服务器连接,我希望仲裁器随机确定哪个节点获得哪些连接。如果其中一个节点死亡(应用程序已关闭),我希望仲裁器将其连接传递给另一个节点。当节点重新打开时,我希望仲裁器重新分配连接。任何链接或示例代码都会非常有帮助。
问问题
364 次
2 回答
0
套接字连接不是这样工作的——它们是在两台机器之间创建的。好消息是创建新连接的成本并不高。
如果您想详细了解如何使用它们,阅读Berkely Sockets可能是值得的。
除非您的意思是您不关心实际的连接对象,而是关心连接的总数。在这种情况下,您可以使用Semaphore或SemaphoreSlim来控制连接总数。这将允许您随机分配连接,直到达到最大数量。然后,当连接丢失时,您再次重新分配,直到信号量被最大化;当新客户端连接时,您可以执行相反的过程 - 关闭与随机当前客户端的连接并为新客户端打开新连接,直到数量达到您的喜好。
让我知道这是否是您的想法 - 如果您正在考虑其他事情,我不想太深入。
于 2013-02-26T21:33:44.587 回答
0
您不能真正在计算机之间“传递”套接字。创建它们时,TCP/IP 堆栈会分配各种无法传输的设置,例如 TCP 序列号等。但是,您可以做的是让您的“仲裁者”在所有传入连接中保持活跃。然后,仲裁器将为您的节点创建另一个套接字,以便它将充当两者之间的代理。
您应该查找负载平衡通用架构,这正是您想要的我认为
于 2013-02-26T21:35:19.853 回答