Как с помощью библиотеки 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 шт):
Запускайте серверную часть на сервере. На виртуалке или на компе с белым адресом или с проброшенным портом.
Для многопользовательской работы нужно распараллелить программу.
Первый способ: используя select выбирать от какого пользователя пришло сообщение в данный момент и обрабатывать по очереди. В этом ответе https://ru.stackoverflow.com/a/1593265/16574
Второй способ запускать треды.
Третий способ запускать мультипроцессинг.
Для начинающих рекомендую оставить socket и сделать на стандартной ThreadingTCPServer
https://docs.python.org/3/library/socketserver.html#socketserver.ForkingTCPServer