【问题标题】:TcpListener & Socket connection failsTcpListener & Socket 连接失败
【发布时间】:2016-12-27 18:42:32
【问题描述】:

我的朋友运行一个简单的 C# 控制台应用程序,它在端口 8484 上启动一个 TcpListener。它是这样完成的:

public static void Listen()
{
    Listener = new TcpListener(IPAddress.Any, 8484);
    Listener.Start();
    Listener.BeginAcceptSocket(new AsyncCallback(EndAccept), null);
}

public static void EndAccept(IAsyncResult IAR)
{
    Console.WriteLine("Connection accepted on Port 8484.");
    Socket socket = Listener.EndAcceptSocket(IAR);
    Instance = new Client(socket);
    Listener.Stop();
    Listener = null;
}

我使用以下方式连接到他:

public void Connect()
{
    _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    try
    {
        _socket.Connect(IP, Port);

        Debug.WriteLine("Connected with server!");
    }
    catch (Exception ex)
    {
        Debug.WriteLine(TypeName + " [ERROR] Could not connect to server @ {0}:{1}: {2}", IP, Port, ex.Message);
    }
}

但是,由于某种原因 - 他无法接受连接,它说它没有响应。 8484 端口在他的计算机上 100% 开放。

为什么会这样?

【问题讨论】:

  • 您的网络上的 8484 端口是否打开?
  • 你的朋友在哪里?在互联网 WAN 或 LAN 上?
  • @DiegoCNascimento WAN。是的,端口是开放的。
  • @user2714359 你怎么确定端口是开放的?如果只是因为您的朋友防火墙被禁用或有规则并不意味着。如果它有 NAT,它可以是开放的,但不能从外部访问。此外,一些 ISP 会阻止低端口,即使是 8484 也会被阻止。
  • @DiegoCNascimento 我们在各个站点测试了该端口,并尝试了一个公共聊天程序来使用该端口,它是开放的。

标签: c# sockets tcp tcplistener


【解决方案1】:

使用 telnet 验证与远程服务器的连接。例如。运行命令“telnet ip_address port”。如果它成功连接,那么您可以访问服务器。如果 telnet 无法连接,则您无法访问服务器,可能是由于防火墙问题。

【讨论】:

  • 如果远程主机没有在 Windows 功能中启用 Telnet 服务器怎么办?还能用吗?
  • 它想要连接到您的服务器而不是 Windows Telnet 服务器。无论如何,如果用户的确认是正确的,这似乎不是防火墙问题,而是 NAT 问题。
  • @DiegoCNascimento 好吧,它说它无法连接。
  • 但是它说它打开了端口,应该说它检查了防火墙(请)。所以 NAT 或 ISP 可能是个问题。
  • @DiegoCNascimento 它可以与其他程序一起正常工作(例如,我们成功地在同一端口上运行了 Java MapleStory 服务器,因此没有真正的问题)。
【解决方案2】:

尝试禁用防火墙。1


1 - 帮助聊天中的用户测试防火墙问题,但尚未打开。那有问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-21
    • 2023-04-05
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 2014-01-15
    • 2020-09-14
    • 1970-01-01
    相关资源
    最近更新 更多