I am trying to make an online tictactoc game with pygame and socket. everything is working well. but there is a small problem that is when the server or client in on receiving mode and waiting to receive data if that takes more than 4 or more sec. then pygame's GUI stops responding. but if data sent then it starts working normally. it happens while receiving data and it took more than 4 or more seconds. please me to solve out
server.py codes
import socket import pygame import sys IP = socket.gethostbyname(socket.gethostname()) PORT = 5555 Biended_adrs = (IP, PORT) server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(Biended_adrs) server.listen() conn, addr = server.accept() print(f"{addr} connected!") def Send(row, col): data = str((row, col)) conn.send(data.encode()) def Receive(): data = conn.recv(1024) return data.decode() pygame.init() display = pygame.display.set_mode((600, 600)) pygame.display.set_caption("Server") GRAY = (100, 111, 111) LineWidth = 10 def DrawLine(): pygame.draw.line(display, GRAY, (0, 200), (600, 200), LineWidth) # h1 pygame.draw.line(display, GRAY, (0, 400), (600, 400), LineWidth) # h2 pygame.draw.line(display, GRAY, (200, 0), (200, 600), LineWidth) # v1 pygame.draw.line(display, GRAY, (400, 0), (400, 600), LineWidth) # v2 DrawLine() firstPlayer = conn.recv(1024) player = firstPlayer.decode() while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: mouseX = event.pos[0] mouseY = event.pos[1] clickedRow = int(mouseY // 200) clickedCol = int(mouseX // 200) if player == "1": try: Send(clickedRow, clickedCol) player = "2" conn.send(player.encode()) except Exception: pass else: pass if player == "2": try: Clientdata = Receive() print(Clientdata, "Client Send!") player = conn.recv(1024).decode() print(player) receive = False except Exception: pass else: pass pygame.display.update() client.py codes
import socket import pygame import sys pygame.init() display = pygame.display.set_mode((600, 600)) pygame.display.set_caption("Client") HOST = socket.gethostbyname(socket.gethostname()) PORT = 5555 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect((HOST, PORT)) draw = DrawLine() def Send(row, col): data = str((row, col)) client.send(data.encode()) def Receive(): data = client.recv(1024) return data.decode() GRAY = (100, 111, 111) LineWidth = 10 def DrawLine(): pygame.draw.line(display, GRAY, (0, 200), (600, 200), LineWidth) # h1 pygame.draw.line(display, GRAY, (0, 400), (600, 400), LineWidth) # h2 pygame.draw.line(display, GRAY, (200, 0), (200, 600), LineWidth) # v1 pygame.draw.line(display, GRAY, (400, 0), (400, 600), LineWidth) # v2 firstPlayer = "1" client.send(firstPlayer.encode()) player = "1" while True: for event in pygame.event.get(): If event.type == pygame.QUIT: sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: mouseX = event.pos[0] mouseY = event.pos[1] clickedRow = int(mouseY // 200) clickedCol = int(mouseX // 200) if player == "2": try: Send(clickedRow, clickedCol) player = "1" client.send(player.encode()) except Exception: pass if player == "1": try: data = Receive() print(data, "Server Send!") player = client.recv(1024).decode() print(player) except Exception: pass else: pass pygame.display.update()