Я знаю, что это уже задавали, но предыдущие вопросы не помогли. Я пытаюсь отправить некоторые данные с помощью сокетов. В частности, я использую свой ноутбук в качестве сервера и эмулятор 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()
Когда я подключен к одному и тому же Wi-Fi и в HOST (в обоих кодах) я ставлю IP, который я вижу из ipconfig (192.168. --- .---), все работает. Это также работает, если в ХОСТЕ сервера я поставил 0.0.0.0.
Однако, когда я помещаю IP-адрес устройства (который я вижу на https://whatismyipaddress.com/), и вместо использования WiFi я использую телефонное соединение, которое я получаю: ConnectionRefusedError: [Errno 111] Connection Refused
.
Может кто-нибудь объяснить мне, как я могу соединить клиент и сервер, когда сети разные? Я застрял с этим некоторое время.
Я также попытался открыть порт на брандмауэре, следуя этой процедуре , и поместил его в код вместо 5555, но все равно он не работал.
Заранее спасибо за помощь.