Я пытаюсь запрограммировать простой многопоточный игровой сервер на Python для развлечения.После большого разочарования я не смог выяснить, почему истекло время моего тестового клиентского соединения.Вот мой код server.py:
import socket
import threading
import clientThread
import struct
import string
class Server:
def __init__(self):
self.HOST = 'localhost'
self.PORT = 22085
self.BUFFIZE = 1024
self.ADDRESS = (self.HOST,self.PORT)
self.clientList = []
input("Press enter to start the server. . .")
self.running = True
self.serverSock = socket.socket()
self.serverSock.bind(self.ADDRESS)
self.serverSock.listen(2)
self.clientThread = clientThread.clientThread(self)
print("Starting client thread. . .")
self.clientThreadObj = threading.Thread(target = self.clientThread.start, args = (self))
print("Awaiting connections. . .")
while self.running:
clientInfo = self.serverSock.accept()
print("Client connected from %s." % clientInfo[1])
# Append to clientThread list...
self.serverSock.close()
print("- end -")
serv = Server()
Сервер запускает поток для существующих подключений и начинает прослушивание.Поток, созданный для существующих соединений, clientThread, просматривает список клиентских объектов, которые пока ничего не делают, они просто архитектурные.Вот clientThread.py
import socket
import threading
import struct
import string
class clientThread:
def __init__(self, serv):
self.server = serv
self.clientList = []
self.running = True
print("Client thread created. . .")
def start(self):
print("Beginning client thread loop. . .")
while self.running:
for client in self.clientList:
message = client.sock.recv(self.server.BUFFSIZE)
if message != None and message != "":
client.update(message)
И, наконец, очень простой клиентский объект:
import string
class clientObject:
def start(self,clientInfo):
self.sock = clientInfo[0]
self.address = clientInfo[1]
def update(self,message):
self.sock.send("Testamundo.\r\n".encode())
Теперь проблема в том, что мой клиент не может даже подключиться к моему серверу,Это просто время ожидания.Вот код для моего простого клиентского теста:
import socket
import string
address = ("192.168.1.1",22085)
mySocket = socket.socket()
mySocket.connect(address)
print("Connected successfully!")
В строке, которая подключается к адресу, возвращается «попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через некоторое время, илине удалось установить соединение, так как подключенный хост не смог ответить ".
Есть предложения?Спасибо!Извините за весь этот код, я не был уверен, нужно ли мне публиковать все это или нет, поэтому я решил, что это не повредит слишком сильно.