【问题标题】:TCP Server IP Client Connection IssueTCP 服务器 IP 客户端连接问题
【发布时间】:2012-08-31 07:03:21
【问题描述】:

好的,所以我刚刚开始使用 c# 搞乱 TCP,并且我已经成功设置了一个服务器,我可以向它发送“Hello World”消息,无论如何我一直在本地执行此操作(因为两台笔记本电脑都是连接到同一个路由器)我只是使用 192.168 号码进行连接。但它的全部目的是在互联网上工作,两台计算机的路由器 IP 地址显然是相同的,如果我输入路由器 IP 地址它就不起作用,如果我输入 192.168 号码肯定会赢'不能在互联网上工作...那么我使用什么 IP,或者什么是更好的解决方案?

如果重要的话,这里是代码行

 var client = ScsClientFactory.CreateClient(new ScsTcpEndPoint("192.168.1.142", 10085));

其中 192.168.1.142 是启动服务器的笔记本电脑的本地 ip

10085 是端口。

【问题讨论】:

  • 首先,您对不同的网络、路由器在此场景中扮演的角色以及 NAT 了解多少?
  • 我看到你已经有了正确的答案。但是,我认为对这些网络概念进行简要说明会很有用 =)

标签: c# tcp ip


【解决方案1】:

您必须将路由器配置为将任何传入连接到端口 10085 转发到您的本地 IP 地址。然后任何人都可以使用您的外部 IP 地址进行连接。

每个路由器都有自己的配置系统,所以你必须在谷歌中搜索“端口转发”和你的路由器型号。

【讨论】:

    【解决方案2】:

    这取决于我猜你想要达到的目标。例如,如果您制作聊天应用程序。客户端(在路由器后面)可以说它的本地 IP 是 192.168.1.111,路由器 IP 是 80.120.78.100。客户端将连接到服务器。

    一旦建立连接,发送回客户端就没有关系了,因为客户端和服务器之间的连接已经打开,因此服务器将使用相同的连接。路由器会计算出将数据包“路由”到哪里,这些东西通常你不需要知道。

    如果您的服务器是寻找客户端的服务器,那就不同了。

    【讨论】:

      【解决方案3】:

      我将尝试解释一下网络,但您必须搜索一下

      基本上,理解一个IP掩码,例如192.168.1.0作为一个网络。路由器的作用是连接不同的网络,这就是为什么路由器通常有 2 个端口,WAN(广域网)和 LAN(本地)。

      有了这个概念,您可以将互联网视为由各种 ISP 连接而成的一个大网络。每个 ISP 都有一个连接其网络的路由器,以及另一个为您提供 Internet 连接的路由器。最后,你家里有一个路由器。所以,从这里,您可以了解到连接了 3 个网络:您的家、您的 ISP 和互联网。

      为了让您能够连接到我家的计算机,我必须让这台计算机从互联网上可用,我必须发布它。我通过在路由器上设置 NAT(网络区域转换)来做到这一点。此 NAT 表示“任何来自 Internet 的 12345 端口,在 80 端口转发到 192.168.1.10(我的服务器)”。

      这是一个非常简单的解释,好吗?


      现在,让我们退后一步。如果您的网络上有另一台计算机可用,您可以测试您的程序是否正在使用更简单的方法。

      1. 将两台计算机连接到您的LAN,以便它们获得相似的 IP 地址。假设他们是192.168.1.10192.168.1.20
      2. 10 运行服务器并禁用所有类型的防火墙(Windows 和第三方)
      3. 20 运行客户端并尝试连接到服务器

      【讨论】:

        猜你喜欢
        • 2012-07-04
        • 2018-12-30
        • 2017-08-04
        • 2011-11-16
        • 1970-01-01
        • 2021-08-12
        • 1970-01-01
        • 2021-04-01
        • 1970-01-01
        相关资源
        最近更新 更多