1

这是我的服务器

在 Internet 上使用多个不同的端口检查工具时,我的服务器上有连接,表明我的端口是开放的

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 和套接字从客户端尝试了多次不同的尝试,每次连接被拒绝时,我的客户端似乎有问题,因为我的服务器从端口检查器接收连接 错误

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

编辑:我可以通过 localhost (127.0.0.1) 连接,但不能通过我的公共 IP

4

4 回答 4

3

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

于 2016-05-18T19:35:47.353 回答
2

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

于 2016-05-18T19:59:23.113 回答
0

它与 Windows 防火墙异常有关。在第一次运行时,应该会提示您允许连接。如果您第一次允许它,则会在防火墙中创建异常。也许你否认了。还可以尝试通过 app.manifest 提升您的应用程序所需的权限

于 2016-05-18T20:22:03.583 回答
-1

这似乎是一个端口转发/路由问题。使用端口检查器检查转发端口是否可访问

于 2019-09-21T05:22:36.023 回答