Python - Sockets - bloqueo mientras espera datos

 
Vista:
sin imagen de perfil

Sockets - bloqueo mientras espera datos

Publicado por Cesar (6 intervenciones) el 24/08/2015 22:40:21
Buenas tengo una duda que no puedo resolver y espero que puedan ayudarme.
Eh estado programando un juego de ajedrez con modalidad para jugar en red contra otra persona usando python y pygame para su interfaz grafica.
El juego en general funciona perfectamente excepto por una cosa.
Los datos de movimientos se envian en su turno o sea si es turno de piezas blancas el jugador de piezas negras se queda esperando que haga su movimiento para actualizar su tablero con los movimientos enviados.
Mientras sc.recv(1024) espera los datos bloquea todo el juego hasta que lleguen los datos ocasionando que si el jugador que espera intente hacer algo como tratar de salir del juego mientras no sea su turno la ventana de pygame deje de responder y se cuelgue.
De que forma puedo evitar que el juego deje de responder si el jugador de espera intenta hacer algo cuando no es su turno?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#conexion server
def MainLoop(self):
	s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
	s.bind((direccionIP, 9999))
	s.listen(1)
	print "Esperando conexion..."
	sc, addr = s.accept()
#espera de datos server
	if currentColor== 'negro'
		recibido = sc.recv(1024) #mientras no reciba datos juego congelado con posibildad de cuelgue
		numero=int(recibido)
		Aa=numero/1000
		AA=numero%1000
		Ee=AA/100
		EE=AA%100
		Ii=EE/10
		II=EE%10
		moveTuple=(Aa,Ee),(Ii,II)
El codigo de juego es largo asi que solo muestro una parte, si se necesita mas informacion para saber el problema no duden en avisarme.
Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Sockets - bloqueo mientras espera datos

Publicado por xve (1646 intervenciones) el 25/08/2015 08:12:24
Hola Cesar, he utilizado sockets, pero creo que no me he encontrado con esa casuística...

se solucionaría el problema utilizando un thread?

Me gustaría poder probarlo, seria posible que adjuntaras tu código?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Sockets - bloqueo mientras espera datos

Publicado por Cesar (6 intervenciones) el 25/08/2015 16:59:23
Gracias por responder, adjunto el juego para que lo veas como va.
El problema es en el modo Servidor-Cliente mientras se espera la jugada.
me pidieron que ponga contraseña al rar asi que te envio el pass en contactar.
Disculpa las molestias por eso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar