当我们ping到路由器的任何公共IP时,它会给出回复, 如果我们使用特定网络的私有IP ping本地计算机,我们就不会得到答复, 那么有没有办法让我可以在网络中与特定的PC建立直接连接或套接字。 我听说过,我必须与特定网络的公共IP连接,并且端口号将决定,在该网络中的哪台PC上,我的请求将会发生。 但是这种方法不起作用..
答案 0 :(得分:0)
如果计算机位于使用网络地址转换(NAT)的路由器后面 - 也就是说,计算机具有互联网不可见的私有IP - 那么您无法从外部ping或建立与计算机的连接。这是因为路由器不知道您想要哪台计算机,因为路由器后面的所有计算机共享相同的公共IP地址。
在这种情况下建立连接的方法是让路由器后面的计算机建立与外部计算机的连接。例如,当您访问网站时,您可以从路由器后面的计算机执行此操作,因为您的计算机正在启动连接。但是,您要访问的Web服务器必须具有公共IP。
当路由器后面的计算机启动连接时,路由器会选择一个端口号与该连接关联,因此来自外部的用于该连接的数据包将转到正确的计算机。但是,这仅适用于该特定连接上的流量;端口号不是映射到该计算机的通用目的。
同一台路由器后面的两台计算机可以使用私有IP建立连接,因为它们不必通过路由器来完成。
答案 1 :(得分:0)
您可以与您的朋友决定将成为客户端(启动TCP连接的那个)以及谁是服务器(接收TCP连接的那个)以及应该使用哪个端口(让我们说X)。让我们说你的朋友是服务器。然后他/她必须配置他/她的路由器将所有流量重定向到路由器到端口X到他/她的私有IP到端口X(这是Warren提到的NAT)。
如果您使用1024以上的端口,则服务器(在朋友的PC上运行)不需要root /管理员权限。
您的程序(客户端)将连接到您朋友的公共IP地址。他/她可以通过以下方式检查他/她的公共IP:What is my IP