Я пишу код сервера для игры в шашки. Тут у меня каждый раз для нового клиента создается новый процесс. Но т к в игре у нас сообщения отсылаются и в ответ на запрос игрока как ему так и его сопернику я решил в объекте игрок еще запоминать его адресс ip чтобы потом можно было отослать ему сообщения(если его соперник походит). Как нам в следующем коде при создании нового процесса с клиентом узнавать его ip-адрес?
import pickle
import socket
import socketserver
import threading
import time
class Player:
def __init__(self, id, name, ip_adress):
self.id = id
self.name = name
#состояние 1 - прошел авторизацию но еще не играет, состояние 2 - еще не играет и ждет появление партнера по игре, состояние 3 - в игре
self.state=1
#игровой цвет - нужен для игры
self.color=None
self.ip=ip_adress
#список всех авторизированных игроков
list_of_player=[]
#обработчик запросов
class TCPRequestHandler(socketserver.BaseRequestHandler):
def handle(self):
encoding = "utf-8"
#инфа что мы получили
data = self.request.recv(1024)
# Дальше мы обрабатываем данные, которые пришли
class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
pass
if __name__ == "__main__":
#адрес и порт нашего сервера
HOST, PORT = "localhost", 80
server = ThreadedTCPServer((HOST, PORT), TCPRequestHandler)
# ip, port = server.server_address
server_thread = threading.Thread(target=server.serve_forever)
server_thread.daemon = False
server_thread.start()
#чтобы сервер закрылся только при исключении, например прерывании с клавиатуры
while True:
try:
time.sleep(1)
except:
break
server.shutdown()
server.server_close()