Ho qualche problema con i socket in Python. Ogni volta che qualcuno si connette funziona bene, ma se si disconnettono il programma del server si chiude. Voglio che il programma server rimanga aperto dopo la chiusura del client. Sto usando un loop True while per mantenere in vita la connessione ma una volta che il client chiude la connessione il server chiude la sua connessione.Prese Python - mantenere vivo il socket?
Ecco il 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: ')
Qui è il server:
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)
Stai utilizzando n + 1 prese per n connessioni? Hai bisogno di un socket che sia in ascolto in ogni momento. Questo socket di ascolto accetta nuove connessioni e apre un altro socket ogni volta che viene richiesta una connessione – Penang
Puoi pubblicare un breve pezzo di codice per dimostrare il problema? – SimonJ
n + 1 prese? Non sono sicuro se sto seguendo. Potresti spiegarci un po 'di più? – AustinM