我知道已经有人问过这个问题,但是先前的问题没有帮助。我正在尝试使用套接字发送一些数据。具体来说,我将笔记本电脑用作服务器,将智能手机上的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,但仍然无法正常工作。
预先感谢您的帮助。