gpt4 book ai didi

c# - TcpListener.AcceptTcpClient 和防火墙

转载 作者:太空宇宙 更新时间:2023-11-03 11:53:26 32 4
gpt4 key购买 nike

我有一个 TcpListener 对象,它在防火墙后面的 4000 端口上运行。显然,为了让外部客户端连接到 TcpListener,需要在防火墙中打开端口 4000;否则,外部连接请求将无法通过。

我的问题与当我像这样接受连接请求时发生的事情有关:

TcpClient client = server.AcceptTcpClient();

TcpClient 在本地接口(interface)上打开,带有系统分配的端口号。是否必须在防火墙内打开此端口号,以便外部客户端与此 TcpClient 实例通信?如果是这样,是否可以指定要使用的端口号范围以便提前打开它们?或者防火墙是否自动允许在这个系统分配的端口号上进行通信,因为防火墙后面的某些东西(在这种情况下是我的服务器)建立了,即接受了连接?

最佳答案

  • 在服务器机器上,防火墙需要允许从客户端连接的端口到 TcpListener 正在监听的端口的传入连接

  • 在客户端计算机上,防火墙需要允许传出连接TcpListener 正在监听的端口,从客户端连接的端口。

大多数防火墙(例如 Windows 防火墙)都配置为允许到任何目的地的任何传出连接,因此您只需创建一个规则,允许来自任何来源的端口 4000 上的传入连接。

如果你想更严格地限制它,你可以绑定(bind) TcpClient to a specific port而不是系统分配的端口,并在服务器和客户端上创建防火墙规则以仅允许来自/到此端口的连接。

关于c# - TcpListener.AcceptTcpClient 和防火墙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1415682/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com