【问题标题】:How Can I ping or create a scoket connection with my friend?如何与朋友 ping 或创建套接字连接?
【发布时间】:2015-06-12 05:44:13
【问题描述】:

当我们 ping 到路由器的任何公共 IP 时,它会给出回复, 如果我们使用特定网络的私有 IP ping 本地计算机,我们没有得到回复, 那么有没有办法让我可以与网络中的特定 PC 进行直接连接或套接字。 我听说,我必须与特定网络的公共 IP 建立连接,端口号将决定该网络中的哪台 PC,我的请求将通过。 但是这个方法行不通。。

【问题讨论】:

标签: sockets networking ip ping


【解决方案1】:

如果计算机位于使用网络地址转换 (NAT) 的路由器后面 - 也就是说,计算机具有对 Internet 不可见的私有 IP - 那么您无法从外部 ping 或建立与计算机的连接.这是因为路由器不知道您想要哪台计算机,因为路由器后面的所有计算机共享相同的公共 IP 地址。

在这种情况下建立连接的方法是让路由器后面的计算机与外部计算机建立连接。例如,当您访问网站时,您可以从路由器后面的计算机上进行访问,因为您的计算机正在启动连接。但是,您要访问的 Web 服务器必须具有公共 IP。

当路由器后面的计算机启动连接时,路由器会选择一个与该连接关联的端口号,因此来自外部的用于该连接的数据包将发送到正确的计算机。但是,这仅适用于该特定连接上的流量;端口号不是到该计算机的通用映射。

同一路由器后面的两台计算机可以使用私有 IP 相互建立连接,因为它们不必经过路由器即可。

【讨论】:

  • 此信息充其量是不完整的,几乎是错误的。 NAT 后面的网络服务器或其他机器必须拥有公共 IP 来接受外部连接。有一个东西叫做端口转发,有打孔,还有 UPnP,我敢肯定这个问题有很多重复。
【解决方案2】:

您可以与您的朋友一起决定谁将成为客户端(发起 TCP 连接的一方),谁是服务器(接收 TCP 连接的一方)以及应该使用哪个端口(比如说 X)。假设您的朋友是服务器。然后他/她必须配置他/她的路由器,将所有流量重定向到路由器到端口 X 到他/她的私有 IP 到端口 X(这就是 Warren 提到的 NAT)。

如果您使用 1024 以上的端口,则服务器(在您朋友的 PC 上运行)不需要 root/管理员权限。

然后您的程序(客户端)将连接到您朋友的公共 IP 地址。他/她可以通过以下方式查看他/她的公共 IP:What is my IP

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    相关资源
    最近更新 更多