【问题标题】:Unix Socket C: Connecting from another network [closed]Unix Socket C:从另一个网络连接[关闭]
【发布时间】:2014-08-12 16:02:53
【问题描述】:

我开始学习如何使用 tcp 套接字在 C 中配置 unix 服务器/客户端基础应用程序,现在的问题是,我总是使用我在服务器中选择的端口从客户端连接到服务器,并且一个(本地?)地址,例如 192.168.1.X。老实说,我对此一无所知,我认为192是本地接口地址,因此只能在同一网络中实现连接,我也尝试过两台PC但仍在同一网络中。来自另一个网络的连接呢?是个复杂的事情吗?我想只是将我的网络的提供商 IP 传递给客户端不会完成这项工作

【问题讨论】:

  • 您需要在路由器中配置端口转发。
  • 您可以在服务器的机器上运行网络浏览器并将其指向 whatismyip.com 以找出该机器在 Internet 上已知的 IP 地址。请注意,如果服务器机器位于 NAT 之后,则该 IP 地址将是 NAT 的地址,并且您需要在 NAT 上配置端口转发,以便传入 TCP 连接到您选择的端口上的该 IP 地址访问您的服务器计算机。
  • "... unix server/client basilar ...请问什么?
  • 伙计们,这不是一个与编程相关的问题,所以这里显然是题外话。
  • 这个问题似乎跑题了,因为它是关于网络配置的。

标签: c sockets unix tcp


【解决方案1】:

如果您在服务器端有一个静态全局 IP,则只需服务器的 ip 就足够了。但是,有时网络提供商使用 NAT,它会为您分配一个私有 IP,而所有通信都是通过网络提供商的网关 IP 进行的。在这种情况下,网络提供商应该将您想要使用的特定端口转发到您的机器(他们可能不会)。否则,您的服务器将无法与网络提供商网络之外的客户端进行通信。

【讨论】:

    【解决方案2】:

    通常在这种情况下,您在浏览器中打开路由器配置网页,并在“端口转发/触发”部分输入将来自 LAN 外部的连接重定向到 LAN 上给定计算机上的某个端口的条目,例如:

    #   Service Name          Start Port    End Port    Server IP Address
        1   myServerOnPort9875  9875          9875      192.168.1.7
    

    鉴于您的外部 IP 是 89.75.140.30,您现在可以使用

    从任何地方连接
    telnet 89.75.140.30 9875
    

    假设服务器正在侦听 IPv4 的 0.0.0.0 和 IPv6 的 0::0,则到达本地计算机 192.168.1.7 上的端口 9875。

    【讨论】:

      【解决方案3】:

      IP 地址 192.168.1.x 是属于私人使用范围之一的地址,通常用于带有 WiFi 路由器的家庭网络。您应该能够从该网络内部连接(取决于确切的网络设置),但不能从外部连接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-17
        • 2014-12-21
        • 2015-02-27
        • 2014-02-15
        • 1970-01-01
        • 2019-08-12
        • 1970-01-01
        相关资源
        最近更新 更多