C# 客户端服务器IM应用程序中外部IP上的服务器没有响应

C# 客户端服务器IM应用程序中外部IP上的服务器没有响应,c#,networking,client-server,instant-messaging,C#,Networking,Client Server,Instant Messaging,我正在跟随一个教程@来尝试收集网络的基础知识。对于那些不想跳起来的人来说,这是一个快速的图坦卡蒙,演示如何编写一个简单的客户机-服务器模式的聊天应用程序 当我尝试在tut中运行代码时,只要客户机和服务器都在同一个网络上,它就可以正常工作,但当我尝试在外部运行代码时(找一个伙伴运行客户机应用程序,并在我身边运行服务器应用程序),一切都会变得糟糕。代码在同一网络中工作的事实让我相信这不是编码问题,而是网络设置方式的问题 我试图在我的IP地址21719端口上运行服务器,我已经打开了端口,但是其他人无法

我正在跟随一个教程@来尝试收集网络的基础知识。对于那些不想跳起来的人来说,这是一个快速的图坦卡蒙,演示如何编写一个简单的客户机-服务器模式的聊天应用程序

当我尝试在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 IPADLOCAL=IPAddress

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

那么,有人能为我找到解决办法吗

谢谢,
Sam

您是否有人使用您的外部(互联网)IP地址?(见你的。)
您是否已锁定路由器以将所有通信从端口21719转发到服务器?

一些提示:

  • 您使用的是哪种操作系统?请检查防火墙规则的范围和/或配置文件(在“高级”选项卡下)
  • 当您的朋友尝试telnet连接到端口(连接到im服务器)时,使用或监控流量(Wireshark在Vista和Win 7上有问题)。如果你没有看到任何东西击中你的机器,那么问题可能出在路由器端。仔细检查设置-你说你设置了转发规则(NAT),但它是否也设置了路由器防火墙上的规则
    您正在使用的本地IP地址是什么?(ipAddress)如果它是127.0.0.1,那就不对了(我也不知道它在内部是如何工作的,但Windows似乎时不时地使用magic)。此外,如果您的本地计算机中有多个NIC,那么端口转发可能只设置为转发到其中一个NIC,而您正在使用另一个NIC的IP

    如果这不是问题所在,以下是一些一般性建议:

  • 抓取一份netcat的副本。这是一个小型的网络测试工具,它唯一的工作就是形成一个简单的TCP连接。这将允许您将代码作为变量排除在所有这一切中。如果netcat可以形成连接,那么您知道问题出在代码上。如果不是,你已经确认这是你的路由器

  • 您可以使用WireShark(或TShark)查找ICMP数据包。在远程计算机上捕获ICMP数据包。如果你从路由器上得到“无法到达目的地”,你就再次证明它是你的路由器


  • 正如Spencer所说,您需要确保在路由器上设置了端口转发,以便将端口21719上传入的所有数据包转发到您的内部计算机。至于如何做到这一点,在不知道路由器类型的情况下很难说。

    您是在internet可路由IP地址上,还是坐在NAT网关后面?如果后者已将您的服务器端口从路由器转发到服务器?您的客户端是否可以telnet接入您:telnet yourip 21719?他们可能做不了什么,但如果他们连接起来,那么这就是发生了什么的线索。斯宾德-我刚找到一个伙伴给我打电话,连接超时了。我想我们已经找到了问题所在,是我的配置。有什么办法吗?如果这个应用程序在你的局域网上运行,那么问题就与连接有关。找出是什么阻碍了连接,一切都应该顺利进行。