C# TCP 套接字客户端拒绝连接

C# TCP Socket Client refuses connection

这是我的服务器

在互联网上使用多个不同的端口检查工具时,我在我的服务器上建立了连接,表明我的端口是开放的

http://www.infobyip.com/tcpportchecker.php

http://www.yougetsignal.com/tools/open-ports/

http://ping.eu/port-chk/

http://ping.eu/port-chk/

static void Main(string[] args)
{
    IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
    IPAddress ipAddress = ipHostInfo.AddressList[0];
    IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 10897);
    Console.WriteLine("Server Start");

    Socket listener = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
    listener.Bind(localEndPoint);
    listener.Listen(10);
    while (true)
    {
        Console.WriteLine("Waiting for a connection...");
        Socket handler = listener.Accept();
        Console.WriteLine(handler.RemoteEndPoint);
        handler.Shutdown(SocketShutdown.Both);
        handler.Close();
    }
}

这是我的客户端代码

 static void Main(string[] args)
 {
     IPEndPoint ip = new IPEndPoint(IPAddress.Parse("MY IP HERE"), 10897);
     Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
     server.Connect(ip);
 }

我每次都会收到这个错误,我已经尝试使用 System.Net.Sockets.TcpClient 和套接字从客户端进行多次不同的尝试,每次我都被拒绝连接,所以这似乎是我的客户端的一些问题,因为我的服务器接收到连接来自港口检查员

我已经阅读了许多其他套接字主题,但所有问题都与服务器有关,而不是与客户端有关,我不知道哪里出了问题,有人可以帮助我吗?

编辑: 我可以通过本地主机 (127.0.0.1) 连接,但不能通过我的 public IP

代码工作正常(服务器的前两行什么都不做)。您有防火墙或路由问题。

看来问题是我的路由器有一些设置,因此它不接受到外部 ip 的内部连接,我有我的朋友 运行 客户端代码并且连接正常

与Windows防火墙异常有关。在第一个 运行 上,您应该会收到允许连接的提示。如果您第一次允许它,则会在防火墙中创建例外。也许你否认了。还可以尝试通过 app.manifest

提升您的应用程序所需的权限

这似乎是一个端口转发/路由问题。使用 Port checker

检查转发端口是否可访问