【问题标题】:how to connect two different computers in two different networks如何在两个不同的网络中连接两台不同的计算机
【发布时间】:2017-08-23 02:45:48
【问题描述】:

下面的代码在同一网络上的两台计算机之间工作正常,但在两个不同网络上的两台计算机之间不能正常工作,我尝试使用公共 IP 地址

克林特

import socket               
s = socket.socket()         
port = 10000
ip=input("what is ip : ")
s.connect((ip, port))
print (s.recv(1024))
s.close 

服务器

import socket
s = socket.socket()
ip=socket.gethostbyname(socket.gethostname())
print (ip)
port = 10000           
s.bind((ip, port))       
s.listen(1)                 
while True:
        c, addr = s.accept()
        print ('Got connection from', addr)
        c.send(bytes([int(1)]))
        c.close()       

这个问题已经被问过很多次了,但我能找到的所有答案是我必须做“端口转发”,没有任何代码示例如何在他们说我应该下载应用程序的一些答案中做到这一点将端口转发给我,但我不知道如何在我的 python 代码中使用它?

【问题讨论】:

    标签: python sockets


    【解决方案1】:

    端口转发是您在路由器级别执行的操作。例如,如果您尝试连接的两台计算机位于两个不同家庭的两个不同 WiFi 路由器后面,那么您需要将两个位置的两个 WiFi 路由器都设置为转发端口 10000(您正在使用的那个)转发到内部 IP运行代码的计算机。

    您的 WiFi 路由器有一个公共 IP(您现在可能正在使用),并且运行您的 python 代码的计算机具有由 WiFi 路由器分配的网络内部的本地 IP。端口转发将流量传送到路由器的公共 IP,并在本地网络内部将其转发到运行您程序的某个本地 IP 的计算机。

    换句话说,这不是您将在代码中执行的操作 - 这是您将在路由器软件中执行的操作。

    【讨论】:

      【解决方案2】:

      如果您有雄心壮志,可以按照本教程进行操作,无需配置您的设备以进行端口转发。假设您有支持 uPNP 的路由器。

      https://www.electricmonk.nl/log/2016/07/05/exploring-upnp-with-python/

      甚至可能有一个模块可以完成所有腿部锻炼。(未检查它是如何工作的)

      https://pypi.python.org/pypi/UPnP/1.3

      【讨论】:

      • 我无法下载我已经尝试了几天的 upnp,当我尝试下载它时,它说“UPnP-1.3-py27-none-any.whl 不是这个平台上支持的轮子。”
      • 我希望您使用的是 python3.x?你在python2.7下试过吗?
      • 我使用的是python 3.6,我没有在python 2.7下尝试过,我现在就试试
      • 我相信 .whl 文件只是 zip。您可以下载 .whl 并提取相关的 .py 文件。然后将其插入您的代码库。根据 python 3.6 的要求进行修改。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      相关资源
      最近更新 更多