如何在两个不同的网络中连接两台不同的计算机



下面的代码在同一网络上的两台计算机之间工作正常,但在两个不同网络上的两台计算机之间不起作用,我尝试使用公共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 代码中使用它?

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

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

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

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

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

甚至可能有一个模块可以完成所有的腿部锻炼。(未检查其工作原理(

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

最新更新