如何使用套接字在不同的网络上交换数据?

时间:2019-05-06 12:20:07

标签: python sockets networking

我知道已经有人问过这个问题,但是先前的问题没有帮助。我正在尝试使用套接字发送一些数据。具体来说,我将笔记本电脑用作服务器,将智能手机上的Linux仿真器(Termux)用作客户端。在下面,您可以看到两个Python代码。对于服务器:

import socket
HOST = ''
PORT = 5555
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
print('Connected by', addr)
while True:
    data = conn.recv(1024)
    if not data:
        break
    conn.sendall(data)
    s.close()

对于客户:

import socket
HOST = ''
PORT = 5555
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.sendall(b'Hello, world')
data = s.recv(1024)
print('Received', repr(data))
s.close()

当我连接到相同的WiFi并以HOST(同时使用两个代码)连接时,我将从ipconfig(192.168 .---.---)中看到的IP放入了所有文件。如果在服务器的主机中放入0.0.0.0,它也可以工作。

但是,当我放置机器的IP(可以在https://whatismyipaddress.com/上看到)并且不使用WiFi时,我使用的是电话连接:ConnectionRefusedError: [Errno 111] Connection Refused

有人可以解释一下当网络不同时如何连接客户端和服务器吗?我已经坚持了一段时间。

我还尝试在this procedure之后在防火墙上打开一个端口,并将其放在代码中,而不是5555,但仍然无法正常工作。

预先感谢您的帮助。

0 个答案:

没有答案