【问题标题】:No response from sever on external IP in client-server IM app客户端-服务器 IN 应用程序中的外部 IP 上的服务器没有响应
【发布时间】:2009-09-05 23:08:34
【问题描述】:

我正在关注@http://www.geekpedia.com/tutorial239_Csharp-Chat-Part-1---Building-the-Chat-Client.html 的教程,以尝试收集网络基础知识。对于那些不想跳的人来说,这是一个快速的 tut 演示如何编写一个简单的客户端-服务器-模型聊天应用程序。

当我尝试运行 tut 中的代码时,只要客户端和服务器都在同一个网络上,它就可以正常工作,但第二次我尝试在外部执行它(让伙伴运行客户端应用程序,并在我身边运行服务器应用程序),这一切都变得很糟糕。代码在同一个网络中有效的事实让我相信这不是编码问题,而是我的网络设置方式的问题。

我正在尝试在我的 IP 地址上的端口 21719 上运行服务器,该端口已打开,但其他人仍无法连接到我的服务器,根本无法获得任何形式的响应。

用于服务器监听连接的代码(来自 tut)是:

public void StartListening()
        {


            IPAddress ipaLocal = ipAddress; //ipAddress is parsed from txtIP


            tlsClient = new TcpListener(ipaLocal, 21719);


            tlsClient.Start();


            ServRunning = true; //for the running loop

            // Start the new tread that hosts the listener
            thrListener = new Thread(KeepListening);
            thrListener.Start();
        }

现在,教程确实指出 IPAddress ipaLocal = ipAddress;

会导致某些配置出现问题,我开始担心我的配置可能包含在其中。

那么,有没有人可以帮我解决?

谢谢, 山姆

【问题讨论】:

  • 您是在 Internet 可路由 IP 地址上,还是在 NAT 网关后面?如果是后者,您是否已将服务器端口从路由器转发到服务器?
  • 您的客户能否通过 telnet 访问您:telnet yourip 21719 ?他们可能无法做太多事情,但如果他们连接起来,那就是关于发生了什么的线索。
  • spender - 我刚找了一个伙伴来远程登录我,连接超时。所以我认为我们已经找到了问题,它与我的配置有关。关于可以做什么的任何想法?

标签: c# networking client-server instant-messaging


【解决方案1】:

您使用的本地 IP 地址是什么? (ipAddress) 如果是 127.0.0.1,那是不正确的(我也不知道它在内部是如何工作的,但 Windows 似乎不时使用魔法)。另外,如果你的本地机器有多个网卡,也许端口转发只设置为转发到其中一个,而你正在使用另一个的 IP?

如果这不是问题,这里有一些通用建议:

  1. 获取一份 netcat。这是一个小型网络测试工具,它唯一的工作就是形成一个简单的 TCP 连接。这将允许您在所有这些中消除您的代码作为变量。如果 netcat 可以建立连接,那么您就知道问题出在您的代码上。如果不是,则您已确认它是您的路由器。

  2. 您可以使用 WireShark(或 TShark)来查找 ICMP 数据包。在 remote 机器上捕获 ICMP 数据包。如果您从路由器收到“无法访问目标”,则您再次证明它是您的路由器。

正如 Spencer 所说,您需要确保在路由器上设置了端口转发,以便将端口 21719 上的所有数据包转发到您的内部机器。至于具体怎么做,不知道是什么类型的路由器很难说。

【讨论】:

    【解决方案2】:

    您是否有人使用您的外部(互联网)IP 地址? (请参阅您的 here。)
    您是否对路由器进行了针孔化以将所有通信从端口 21719 转发到您的服务器?

    【讨论】:

    • 如果该应用程序在您的 LAN 上运行,则问题与连接性有关。找出是什么阻止了连接,一切都应该顺利进行。
    【解决方案3】:

    一些提示:

    1. 您使用的是哪种操作系统?请检查防火墙规则的范围和/或配置文件(在高级选项卡下)。
    2. 当您的朋友尝试 telnet 到端口(连接到 im 服务器)时,使用 WiresharkNetwork Monitor 监控流量(Wireshark 在 Vista 和 Win 7 上存在问题)。如果您没有看到任何东西击中您的机器,则问题可能出在路由器端。仔细检查设置 - 您说您设置了转发规则 (NAT),但它是否也在路由器的防火墙上设置了规则?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-18
      • 2021-10-07
      • 2020-12-22
      相关资源
      最近更新 更多