无法建立连接,因为目标机器主动拒绝连接[与其他机器不同]
本文关键字:连接 机器 拒绝 其他 因为 目标 目标机 建立 | 更新日期: 2023-09-27 18:13:23
我正在学习套接字编程,在连接到服务器应用程序时遇到此错误。
下面是我在服务器应用程序中对tcpllistener的声明:TcpListener listener = new TcpListener(IPAddress.Loopback, 5152);
下面是我在客户端应用程序中对TcpClient的声明:
TcpClient client = new TcpClient(Dns.GetHostEntry(IPAddress.Loopback).HostName, 5152);
我读过几个这样的问题,我总是得到相同的答案:要么服务器应用程序没有监听端口,要么根本没有运行。但是我已经使用netstat仔细检查了资源监视器和cmd,看看该服务是否正在侦听端口,确实如此。我还包括防火墙例外的服务,所以我不知道为什么我一直得到这个错误,而试图连接到服务器应用程序。
任何想法?
Dns.GetHostEntry(IPAddress.Loopback).HostName
返回您的机器的主机名。当您将主机名传递给TcpClient
时,它将使用Dns.GetHostAddresses(hostName)
将其解析为一个或多个IP地址。这包括您的计算机的公共IP地址和链路本地IP地址(例如,192.168.15.4),但不包括环回地址(127.0.0.1)。
因此,您的客户端正在尝试连接到您的机器的任何非环回地址,而您的服务器只侦听环回地址。因此,无法建立任何连接。
解决方案:连接到服务器正在侦听的同一端点。
IPEndPoint endPoint = new IPEndPoint(IPAddress.Loopback, 5152);
TcpListener listener = new TcpListener(endPoint);
TcpClient client = new TcpClient();
client.Connect(endPoint);