Código
#!/usr/bin/env python import socket from threading import * import time resultado=0 bloqueo=Lock() def aceptar_conexiones(): while True: global bloqueo # creamos el socket serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # usamos esta funcion para mantener en eschucha el puerto que queramos este caso 8000 serversocket.bind(('localhost', 8000)) # mantenemos en escucha el servidor serversocket.listen(3) # aceptamos la conexion clientsocket, clientaddress = serversocket.accept() print 'Conexion desde: ', clientaddress # escribimos la ip del cliente global resultado resultado = resultado + 1 print "Es la conexión numero:", resultado Condition().acquire() Condition().notify() Condition().release() def recivir_datos(): Condition().acquire() Condition().wait() # Espera por los datos print "***A la espera de datos***" if resultado != 0: # mientras estamos conectados hace lo que este dentro del bucle for i in range(5): data = clientsocket.recv(1024) # recibimos datos del cliente print 'cliente %s' % data # ponemos en pantalla lo que nos a dicho el cliente Condition().release() t = Thread(target=aceptar_conexiones()) t.start() t1 = Thread(target=recivir_datos()) t.start() clientsocket.close() # cerramos el socket
Error:
Citar
Traceback (most recent call last):
File "D:\Desktop\Servidor socket.py", line 39, in <module>
t = Thread(target=aceptar_conexiones())
File "D:\Desktop\Servidor socket.py", line 25, in aceptar_conexiones
Condition().notify()
RuntimeError: cannot notify on un-acquired lock
File "D:\Desktop\Servidor socket.py", line 39, in <module>
t = Thread(target=aceptar_conexiones())
File "D:\Desktop\Servidor socket.py", line 25, in aceptar_conexiones
Condition().notify()
RuntimeError: cannot notify on un-acquired lock