I am trying to send a message using sockets dependant on the state of my arrow keys, it seems that the first keypress works fine, and then the rest are irrelevant.
Client code:
import socket
import pygame
sender = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host = '127.0.0.1' #loop back
port = 59769
sender.connect((host,port))
pygame.init()
pygame.display.set_mode((40,40))
while True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT:
sender.send("2".encode())
if event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT:
sender.send("3".encode())
if event.type == pygame.KEYDOWN and event.key == pygame.K_UP:
sender.send("1".encode())
if event.type == pygame.KEYDOWN and event.key == pygame.K_DOWN:
sender.send("2".encode())
pygame.event.pump()
pygame.display.update()
Server code
import socket
import atexit
#Setup socket
PORT = 59769 #Choose any open port, alternatively choose one in advance
HOST = '0.0.0.0' #listen from any device
serversocket = socket.socket()
serversocket.bind((HOST,PORT))
def exit_handler():
print("Handling exit...")
serversocket.close()
print("Socket created at port " + str(serversocket.getsockname()[1]))
#How many devices to listen to
serversocket.listen(1)
#Wait for input
while True:
connection,address = serversocket.accept()
received= connection.recv(1024).decode()
print(received)
#print("Brightness being set to "+received)
#print("Brightness succesfully set")
Why does it only work once, and how can I fix it?