我有一个服务器程序和一个客户端程序。在开发程序时,为了方便起见,我将服务器和客户端都运行在同一台机器上。服务器使用以下代码开始监听传入连接:
var listener = new TcpListener(IPAddress.Any, 7070);
listener.Start();
客户端使用以下几行代码连接到服务器(简化版):
var client = new TcpClient(AddressFamily.InterNetwork);
client.Connect(IPAddress.Loopback, 7070);
我使用
IPAddress.Loopback
是因为我在同一台计算机上运行程序。但是,我知道服务器和客户端未来可能不会在同一台计算机上运行,所以我将其从http://icanhazip.com (IPAddress.Parse(...)
)更改为我的公共IP地址。因此,客户端无法连接到同一台计算机上的服务器,并出现异常No connection could be made because the target machine actively refused it <my public ip:7070>
。我尝试禁用防火墙,但仍然无法正常工作。为什么服务器拒绝连接?我不是明确告诉它使用
IPAddress.Any
来监听所有接口吗?为什么会出现这种情况,我该如何解决?
client.Connect(<你的公网IP>, 7070)
,然后就出现了异常?这是我所期望的,除非你在你的路由器上进行了端口转发,并将端口7070映射到了你的计算机。 - adv12