C# 多个windows用户使用单个UDP端口登录
要求 (不可修改) 我有一个windows窗体应用程序。当此应用程序运行时,它将侦听UDP端口 用户可以登录到windows并打开相同的应用程序并运行它,然后在不注销的情况下切换windows用户并打开相同的应用程序并运行它 问题 这两个应用程序通过使用监听同一端口C# 多个windows用户使用单个UDP端口登录,c#,asp.net,C#,Asp.net,要求 (不可修改) 我有一个windows窗体应用程序。当此应用程序运行时,它将侦听UDP端口 用户可以登录到windows并打开相同的应用程序并运行它,然后在不注销的情况下切换windows用户并打开相同的应用程序并运行它 问题 这两个应用程序通过使用监听同一端口 SocketOptionName.ReuseAddress 如图所示。但只有一个人能得到数据 问题 有一些方法可以让另一个用户的应用程序读取数据?。否则,我是否可以侦听通知我windows用户切换的事件 编辑 下面是用于设置侦听器
SocketOptionName.ReuseAddress
如图所示。但只有一个人能得到数据
问题
有一些方法可以让另一个用户的应用程序读取数据?。否则,我是否可以侦听通知我windows用户切换的事件
编辑
下面是用于设置侦听器的代码
IPEndPoint localEndPoint = new IPEndPoint(localAddress, listenPort);
UdpClient udpListener = new UdpClient();
udpListener.ExclusiveAddressUse = false;
udpListener.Client.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress, true);
udpListener.Client.Bind(localEndPoint);
IPEndPoint ep = new IPEndPoint(IPAddress.Any, 0);
byte[] answer = udpListener.Receive(ref ep);
一种选择是切换到广播/多播设计。这是允许同一数据报发送到多个套接字的唯一直接方法 或者,转到主/客户端设计。尝试绑定到端口。如果你能,太好了,你是主人。如果失败,请查看是否有主控设备并连接到它 选择第二个端口供主机用于与客户端通信。遵循这个逻辑
有一点很难看——如果主服务器可能退出,一些客户端将不得不将自己提升为主服务器。如果可以在机器上运行,您可能只想使用专用主机。为什么不让它们绑定到不同的端口?无论他们与什么人交谈,都应该向向他们发送数据报的任何端口发送回复,因此应用程序应该能够正常工作。这是一项要求,不能修改。我发布这个问题是为了讨论一个可能的解决方案,而不是需求抱歉。您将它列在了
问题
下,而不是需求
下。我不是建议您更改需求,而是建议您解决问题。如果应用程序不尝试绑定到特定端口,而只是使用一个可用端口,那么就不会有问题。(这是广播/多播应用程序吗?)是的,但我正在端口上收听。如果我为每个windows用户创建了一个新端口,我将不得不转到客户端并为每个用户注册端口,以便他可以发送消息。这是不可能的。你不必注册任何东西来发送消息。只需将它们发送到服务器。服务器应该向发送消息的任何IP和端口发送回复。只有一端需要一个众所周知的端口。如果你真的希望同一个数据报被多个套接字接收,你需要广播或多播。这是一个有趣的解决方案,但正如你所说,它需要一个专用的主机。我仍然可以监听windows事件,该事件告诉我活动用户是否已更改。我将不得不比较解决方案,但谢谢:D