Другой компьютер не может подключится к моему серверу import socket python
Я решил сделать программу, для того чтоб я мог управлять моим компьютером с другого. Но почему-то когда я сам подключаюсь к своему серверу всё работает, а когда я подключаюсь с другого ничего не работает.
Код сервера:
import socket
import os
sock = socket.socket()
sock.bind(('', 9090))
sock.listen(1)
conn, addr = sock.accept()
print("~||-Cервер-активирован-||~\n")
print('Подключено к ', addr)
while True:
data = conn.recv(1024)
udata = data.decode("utf-8")
if not data:
break
os.system(udata)
print(udata)
conn.close()
print("|-Утеряна-связь-с-клиентом-|\n")
Вот мой клиент:
import socket
print('Привет! Для того чтоб удостоверится что Вам можно пользоваться компом сервера введите пароль.')
while True:
passw = str(input("Пароль: "))
if passw == 'xxxx':
print('Доступ разрешён')
break
else:
print('Доступ запрещён. Попробуй ещё раз')
sock = socket.socket ()
sock.connect((socket.gethostname(), 9090))
print("Производим подключение к серверу удалённого доступа к компухтеру...")
while True:
msg = str(input("Сервер дал ответ на ваш запрос. Введите новый или напишите stop, чтобы прервать связь с сервером: "))
if msg == "stop":
print("Прерываем связь с сервером...")
sock.close()
print("Вы разорвали соединение")
break
sock.send(msg.encode('utf-8'))
print("Вы отправили сообщение. Ждём ответа сервера...")
Помогите, пожалуйста.
Ответы (2 шт):
sock.connect((socket.gethostname(), 9090))
здесь у тебя должен быть ip сервера или DNS адрес. Так ты пытаешься подключиться к самому себе (127.0.0.1 или localhost) из-за чего у тебя не получаеться подключиться у другому устройству.
import socket
import sys
if len(sys.argv) < 2: # Если пользователь не ввел ip
print("Usage: {0} <host_ip>".format(sys.argv[0]))
sys.exit()
print('Привет! Для того чтоб удостоверится что Вам можно пользоваться компом сервера введите пароль.')
while True:
passw = str(input("Пароль: "))
if passw == 'xxxx':
print('Доступ разрешён')
break
else:
print('Доступ запрещён. Попробуй ещё раз')
sock = socket.socket ()
sock.connect((sys.argv[1], 9090)) # Это должен быть ip компьютера
print("Производим подключение к серверу удалённого доступа к компухтеру...")
while True:
msg = str(input("Сервер дал ответ на ваш запрос. Введите новый или напишите stop, чтобы прервать связь с сервером: "))
if msg == "stop":
print("Прерываем связь с сервером...")
sock.close()
print("Вы разорвали соединение")
break
sock.send(msg.encode('utf-8'))
print("Вы отправили сообщение. Ждём ответа сервера...")
Для исполнения пишешь в консоль:
python3 "script_name" "host_ip"
Например:
python3 client.py 192.168.0.101
Что бы узнать ip: Linux:
ip a # or sudo ifconfig
Windows:
ipconfig
Я понял в чём была ошибка. Она очень смешная: я вводил не тот ip-адрес, потому что смотрел его через браузер. Как только я ввёл ip из команды ipconfig всё заработало.