[Python] controllare risposta tcp/ip

Matteo Perini perini.matteo a gmail.com
Mar 21 Ago 2012 12:47:25 CEST


Ciao a tutti,
sapete dirmi come fare a controllare la risposta ottenuta durante una 
comunicazione client-server?

Cerco di spiegare meglio il mio problema.
ho del codice simile a questo:

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.1.102",5001))
s.send('comando')
resp = s.recv(1024)


dove 1024 dovrebbe essere il numero di caratteri "letti". giusto?

Quando invio il comando dovrei ottenere una risposta dal server e 
solitamente è così.
Il problema è che la risposta resp che ottengo, in qualche caso, appare 
troncata.

La risposta deve essere una struttura xml tipo questa:
<server>
   <var1>TRUE</var1>
   <var2>TRUE</var2>
   <var3>FALSE</var3>
   <var4>TRUE</var4>
   <var5>FALSE</var5>
   <var6>55.5</var6>
</server>

Se la struttura non arriva completa non posso fare il parsing dell'xml.

Come posso controllare che la struttura arrivi completa?
Devo controllare le righe iniziale e finale?
Devo svuotare in qualche modo il buffer prima di leggere (non dovrebbe 
essere pieno!)?
Leggo troppi caratteri?

E' un problema che si verifica solo ogni tanto e non riesco a trovarne 
una causa.
Il server è windows il client monta linux.

Grazie a chiunque mi indichi qualche possibile strategia per evitare 
questo fastidioso problema.
Ciao
Buon caldo
Matteo


Maggiori informazioni sulla lista Python