Как соединить 2 компьютера в разных сетях, используя python-сокеты - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь подключить 2 разных компьютера, которые в разных сетях, но я получил ошибку:

TimeoutError: [Errno 110] Тайм-аут соединения

И иногда я получаю эту ошибку:

OSError: [Errno 113] Нет маршрута к хосту

Я написал скрипт server.py и запустил его на первом компьютере, а client.py на втором.

server.py

import socket
server_socket = socket.socket()
server_socket.bind(("127.0.0.1", 80))
server_socket.listen(1)
(client_socket, client_address) = server_socket.accept()
print ("client_connected [" + client_address[0] + "]")
client_command = client_socket.recv(1024).decode()
print(client_command.encode())

client.py

import socket
client_socket = socket.socket()
client_socket.connect(("server_public_ip_here", 8820))
client_command = input("command: ")
client_socket.send(client_command.encode())
data = client_socket.recv(1024).decode()
print("server: " + data)

Я ожидаю получить соединение между компьютерами, но продолжаю получать TimeoutError или OSError

1 Ответ

1 голос
/ 19 апреля 2019

если вы находитесь на двух разных компьютерах, вам следует привязаться к 0.0.0.0 (для прослушивания всех сетевых подключений) или к IP-адресу сервера для соединений по этому IP, а не к 127.0.0.1 (localhost). Работает, если клиент и сервер находятся на одной машине. Также вы должны использовать один и тот же порт на клиенте и сервере.

Я проверяю это, и оно работает:

server.py

import socket
server_socket = socket.socket()
server_socket.bind(("0.0.0.0", 8000))
server_socket.listen(1)
(client_socket, client_address) = server_socket.accept()
print ("client_connected [" + client_address[0] + "]")
client_command = client_socket.recv(1024).decode()
print(client_command.encode())

client.py

import socket
client_socket = socket.socket()
client_socket.connect(("127.0.0.1", 8000)) #or enter ip of server
client_command = input("command: ")
client_socket.send(client_command.encode())
data = client_socket.recv(1024).decode()
print("server: " + data)
...