Studio la programmazione di rete e vorrei scrivere una semplice chat da riga di comando in Python.Come creare una semplice chat da riga di comando in Python?
Mi chiedo come rendere costante il receving insieme all'input disponibile per l'invio in qualsiasi momento.
Come si vede, questo client può fare solo un lavoro alla volta:
from socket import *
HOST = 'localhost'
PORT = 21567
BUFSIZE = 1024
ADDR = (HOST, PORT)
tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)
while 1:
data = raw_input('> ')
if not data: break
tcpCliSock.send(data)
data = tcpCliSock.recv(BUFSIZE)
if not data: break
print data
tcpCliSock.close()
Quindi, se un altro client invia un messaggio, questo cliente riceverà solo dopo l'invio di un messaggio di troppo. Scommetto che mi capisci. Ho cercato su google la questione e ho scoperto molte cose interessanti come I/O asincrono, threading, sincronizzazione non bloccante, programmazione concorrente e così via. Ho anche installato il pacchetto twistato. In breve, ho imparato tutte queste cose ma non ho ancora trovato quello che stavo cercando. (Certo, continuerò a provare e provare fino al punto.)
Quindi, la mia domanda è come farlo? =)
http://docs.python.org/library/select.html è la documentazione peggiore che abbia mai letto. Non ci sono esempi! Non ho ottenuto nulla da quella sourse ... – user122922
Ok, allora ho letto dell'API select da qualche altra parte. http://linux.die.net/man/2/select. http://www.cs.utah.edu/~swalton/listings/sockets/programs/. Google funziona. –
http://docs.python.org/howto/sockets.html#non-blocking-sockets –