Другой компьютер не может подключится к моему серверу 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 шт):

Автор решения: Just_User

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
→ Ссылка
Автор решения: dimimir

Я понял в чём была ошибка. Она очень смешная: я вводил не тот ip-адрес, потому что смотрел его через браузер. Как только я ввёл ip из команды ipconfig всё заработало.

→ Ссылка