Ciao a tutti. Sto da poco iniziando a pacioccare con le socket. Come esercitazione ho fatto una semplice applicazione composta da un client e da un server. La parte client manda i messaggi al server e quest'ultimo li stampa a video.
codice:
### server
from socket import *
port = 80
test = socket(AF_INET, SOCK_STREAM)
test.bind(("127.0.0.1", 80))
test.listen(5) # definisce il numero max di connessioni simultanee
print "Ready to receive strings. "
conn, addr = test.accept() #la funzione accept() mette il socket in listening
print "Indirizzo socket", conn
print "Server contattato da", addr
while 1:
data = conn.recv(1024)
print data
if data == "exit":
break
test.close()
print "\nFine."
Client:
codice:
### client
from socket import *
host = "127.0.0.1"
port = 80
addr = host, port
client = socket(AF_INET, SOCK_STREAM)
client.connect(addr)
print "Ready to send strings. Type 'exit' to quit"
while 1:
data = raw_input("Testo: ")
client.send(data)
if data == "exit":
break
client.close()
print "\nFine."
Il codice così com'è funziona correttamente.
Ora volevo fare in modo che anche il server potesse mandare messaggi al client. Una cosa del tipo:
test.send(data)
conn.recv(data)
...ma non funziona.
Per fare questo come posso fare? Devo creare un nuovo oggetto socket?
Sarebbe alquanto scomdo. Su IRC mi è stato suggerito di utilizzare un thread in parallelo per gestire due processi contemporaneamente ma la cosa non mi appare molto chiara. Qualcuno può illuminarmi a riguardo?
Saluti.