时间:2011-06-16 16:06:00

标签: c# sockets tcp

我们有客户端 - 服务器应用程序,其中所有客户端也通过TCP(每个客户端上的TcpClient + TcpListener)相互通信

因此,当客户端A执行某些操作时,它会向客户端B,C和D发送消息,然后等待响应。这对许多客户来说都很慢(现在就像20个人)特别是当客户B死亡时 - 客户A等待直到超时。

有没有更好的方法可能同时播放包给所有人?我知道每个人的主人姓名等。

我只需要发送消息并知道他们是否成功接收了它。

我的选择是什么?

2 个答案:

答案 0 :(得分:1)

我建议完全关闭策略并使用一些消息总线以可靠和性能优化的方式执行此操作。我对ActiveMQ感到满意,即使它是用Java works in C# very easily实现的。如果你想要纯粹的.NET,请看看NServiceBusRhino Service bus。我知道您可能觉得在客户端之间发送消息的任务很简单,您可以自己动手,如果您想在生产中做得可靠,那么如果您利用别人的努力并放松自己,那就更好了。当应用程序在客户站点运行时,尝试解决通信错误将非常令人沮丧。如果您正在编写竞争对手的消息总线,请忽略这一点,当然:) 所有这些解决方案都允许您通过阅读文档来完成工作。做一些测试应用程序“体外”在更换生产代码之前只是为了获得必要的信心,然后更换硬TcpClient。我非常确定你能找到一个截断点来隔离新战略的消息数据报。

答案 1 :(得分:0)

您可以使用多播协议,只需要向您的群组发送一个数据包。