Estoy teniendo un pequeño problema con los sockets en Python. Cada vez que alguien se conecta, funciona bien, pero si se desconecta, el programa del servidor se cierra. Quiero que el programa del servidor permanezca abierto después de que el cliente cierre. Estoy usando un ciclo True while para mantener activa la conexión, pero una vez que el cliente cierra la conexión, el servidor cierra su conexión.Zócalos de Python: ¿mantiene el zócalo con vida?
Aquí es el cliente:
import socket, sys
conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = sys.argv[1]
port = int(sys.argv[2])
conn.connect((host, port))
print("Connected to host " + sys.argv[1])
td = 1
while td == 1:
msg = raw_input('MSG: ')
Aquí es el servidor:
import socket, sys
socket.setdefaulttimeout(150)
host = ''
port = 50005
socksize = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
print("Server started on port: %s" % port)
s.listen(1)
print("Now listening...\n")
conn, addr = s.accept()
while True:
print 'New connection from %s:%d' % (addr[0], addr[1])
data = conn.recv(socksize)
if not data:
break
elif data == 'killsrv':
conn.close()
sys.exit()
else:
print(data)
¿Está utilizando n + 1 zócalos para n conexiones? Necesita un socket que esté escuchando en todo momento. Este socket de escucha acepta nuevas conexiones y abre otro socket cada vez que se solicita una conexión. – Penang
¿Se puede publicar un fragmento de código para demostrar el problema? – SimonJ
n + 1 tomas de corriente? No estoy seguro si estoy siguiendo. ¿Podrías explicar un poco más? – AustinM