Как с помощью библиотеки socket создать сервер на несколько ПК

Я не знаю как сделать чат на несколько ПК с помощью библиотеки socket. Единственное, что я пробовал это заменял IP на свой внешний IP от радмина и давал программу другу, подключённому к сети, но это не помогло и в терминале была ошибка, характеризующая отсутствие сервера.

SERVER:

import socket

HOST = "26.104.62.185"
PORT = 50000

server = socket.socket()
server.bind((HOST, PORT))
server.listen()

print("Сервер запущен!")
name = input("Введите ваше имя: ")
conn, addr = server.accept()

data = (conn.recv(2 ** 10)).decode()
print(f"{data} присоединился")
conn.send(name.encode())

while True:
    msg = input("Я: ")
    conn.send(msg.encode())
    msg = conn.recv(2 ** 10)
    msg = msg.decode()
    print(data, ":", msg)

CLIENT:

import socket

HOST = "26.104.62.185"
PORT = 50000

server = socket.socket()

name = input("Введите ваше имя: ")
server.connect((HOST, PORT))
server.send(name.encode())
data = server.recv(2 ** 10)
server_name = data.decode()
print(f"{server_name} присоединился")

while True:
    msg = (server.recv(2 ** 10)).decode()
    print(f"{server_name}: {msg}")
    msg = input("Я: ")
    server.send(msg.encode())

Что нужно сделать?


Ответы (1 шт):

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

Запускайте серверную часть на сервере. На виртуалке или на компе с белым адресом или с проброшенным портом.

Для многопользовательской работы нужно распараллелить программу.

Первый способ: используя select выбирать от какого пользователя пришло сообщение в данный момент и обрабатывать по очереди. В этом ответе https://ru.stackoverflow.com/a/1593265/16574

Второй способ запускать треды.

Третий способ запускать мультипроцессинг.

Для начинающих рекомендую оставить socket и сделать на стандартной ThreadingTCPServer

https://docs.python.org/3/library/socketserver.html#socketserver.ForkingTCPServer

→ Ссылка