C# 为应用程序设置一系列可用的本地端口

C# 为应用程序设置一系列可用的本地端口,c#,tcp,process,range,port,C#,Tcp,Process,Range,Port,我有一个客户端应用程序,它创建了一个带有随机本地端口的套接字,我无法更改此应用程序的代码,我想设置他可以从我的C#应用程序使用的端口范围。可能吗?谢谢 因此客户端将尝试使用一系列端口号中的任意一个连接到您的应用程序。您无法知道他们将使用哪个插座,但您可以知道他们将使用此范围中的一个 如果是这种情况,您可以做以下两件事之一: 如果应用程序运行的计算机只需与这一个客户端交互,那么只需设置一个TcpListener(或其他套接字侦听器)即可侦听所有端口上的地址。这是有风险的;如果其他计算机试图请求网页

我有一个客户端应用程序,它创建了一个带有随机本地端口的套接字,我无法更改此应用程序的代码,我想设置他可以从我的C#应用程序使用的端口范围。可能吗?谢谢

因此客户端将尝试使用一系列端口号中的任意一个连接到您的应用程序。您无法知道他们将使用哪个插座,但您可以知道他们将使用此范围中的一个

如果是这种情况,您可以做以下两件事之一:

  • 如果应用程序运行的计算机只需与这一个客户端交互,那么只需设置一个TcpListener(或其他套接字侦听器)即可侦听所有端口上的地址。这是有风险的;如果其他计算机试图请求网页,或试图在此comp上设置网络时间,则您的应用程序可能会错误地拦截这些连接
  • 如果您确实需要客户端可以连接的一系列可用端口,那么我将使用for循环来设置tcplistener集合,每个端口对应一个tcplistener

  • 请理解这是针对TCP的。UDP(另一种通用协议)是无状态的,这意味着永远不会在客户端和服务器之间创建连接;客户端只需向该服务器和端口呼喊,并祈祷服务器正在侦听、接收和理解消息。

    任何人都无法连接到使用随机端口号的侦听器。他们猜不到要使用的正确端口。抱歉,更正。我的意思是客户端应用程序使用随机本地端口,我想设置一个他可以使用的端口范围。但是我不能更改此客户端应用程序的代码!但是我不能更改客户端应用程序代码,我想也许我可以使用一些API来做到这一点(当他在随机端口中创建套接字时,为客户端应用程序设置可用端口的范围),也许免费本地端口的钩子列表你有关于客户端应用程序将使用的端口范围的信息吗?我发现很难相信应用程序会在100%完全随机的端口上进行通信,包括通常保留的80端口(用于通过HTTP的Web服务器通信)。一旦您知道客户端将尝试连接,您就可以在相同的端口上侦听(即使您必须在60k+端口上侦听)。这一点都不理想,但这种情况根本不理想。