Python 3.x 如何通过不同的网络连接到另一台电脑
当我在电脑上运行这两个代码时,它们都可以工作。然而,当我给我的朋友一个与我连接的代码时,它不起作用。都在不同的网络上 我已经尝试在两个主机上使用我的主机名。我还尝试使用我的本地IP 我使用的底层代码 最后一个是我给我朋友的Python 3.x 如何通过不同的网络连接到另一台电脑,python-3.x,sockets,networking,Python 3.x,Sockets,Networking,当我在电脑上运行这两个代码时,它们都可以工作。然而,当我给我的朋友一个与我连接的代码时,它不起作用。都在不同的网络上 我已经尝试在两个主机上使用我的主机名。我还尝试使用我的本地IP 我使用的底层代码 最后一个是我给我朋友的 我希望它能通过不同的网络连接为了让你的朋友能够连接,你的服务器应用程序需要绑定()到它运行的电脑的本地LAN IP/端口,然后你的客户端应用程序需要连接()到你网络路由器的公共WAN IP/端口,而不是服务器的LAN IP/端口。您的路由器需要配置为从WAN IP/端口到服务
我希望它能通过不同的网络连接为了让你的朋友能够连接,你的服务器应用程序需要
绑定()
到它运行的电脑的本地LAN IP/端口,然后你的客户端应用程序需要连接()
到你网络路由器的公共WAN IP/端口,而不是服务器的LAN IP/端口。您的路由器需要配置为从WAN IP/端口到服务器LAN IP/端口的端口转发连接。如果您的路由器支持uPNP,您可以在服务器代码中以编程方式设置该转发,否则您必须在路由器的管理界面中手动配置它。好的,我现在明白了。然而,我有点困惑如何获得所有这些。我确实从ipconfig(我的IPV4)找到了我的本地LAN IP。然后,我在路由器的管理界面中找到的端口和WAN IP/端口?如果我确实获得了所有这些信息,我如何确保当我在代码中使用这些信息时,我可以对其进行哈希运算,这样我的朋友就不会知道我的WAN IP/端口。是的,在服务器PC上运行ipconfig
将为您提供LAN IP。您可以选择服务器要侦听的任何端口。将这些输入路由器端口转发配置。WAN IP,您可以从路由器的配置中获取,也可以查询外部站点,如https://www.whatismyip.com
。WAN端口,由您选择。为什么要对朋友隐藏WAN IP/端口?您的客户需要它们,请将它们交给您的朋友,以便他可以将它们输入到他们PC上的客户机中。否则,请将它们存储到(加密的?)文件/字符串中,以便加载到客户机中,并在需要时对其进行解密。对于端口as,我可以选择我想要的任何内容。这是否意味着我可以使用任何数字?如果是这样的话,我会将这些数字用于我的朋友使用的另一个脚本。或者是来自我的路由器或PC的专用端口,用于访问internet?@Mike您的服务器可以监听任何未使用的或操作系统保留的端口号。与路由器相同,用于转发。转发端口和侦听端口不需要是相同的号码。但无论从哪个端口转发,都是客户端需要连接的端口
import os
import socket
s = socket.socket()
port = 8079
s.bind(("My_Host_Name",port))
print("Scanning income connections")
s.listen(1)
conn, addr = s.accept()
print("Connected to:",addr)
while 1:
#Sender
command = input(str("Me: "))
command = command.encode()
conn.send(command)
print("")
#Reciever
data = conn.recv(1024)
data = data.decode()
print("Anonymous: "+data)
print("")
import os
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "My_Host_Name"
port = 8079
s.connect((host,port))
while 1:
#Reciever
data = s.recv(1024)
data = data.decode()
print("Anonymous: " + data)
print("")
#Sender
command = input(str("Me: "))
command = command.encode()
s.send(command)
print("")