[Python] controllare risposta tcp/ip

Manlio Perillo manlio.perillo a gmail.com
Mer 22 Ago 2012 22:09:16 CEST


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Il 22/08/2012 15:07, Matteo Perini ha scritto:
> Ciao,
> rieccomi.
> Sto risolvendo abbastanza bene con un codice tipo questo (semplifico un
> po' per brevità):
> 
> s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
> s.connect(("192.168.1.100",5001))
> s.send('comando')
> 
> r=""
> i=0
> while True:
>     resp = s.recv(1)
>     r=r+str(resp)
>     if r[-10:]=="</endtag>\r\n":
>         break
> 

i a cosa dovrebbe servire?

> Sembra funzionare!

Si, ma non è la soluzione migliore.

Ti ho detto come fare; ecco un esempio (non testato):

## Client
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.1.100", 5001))
buf = '...'
s.send(buf)
s.close() # termina connessione, recv restituirà un buffer vuoto


## Server
buf = [] # accumula i dati in una lista
buf_size = 8196
data = s.recv(buf_size)
while data:
    buf.append(data)
    data = s.recv(buf_size)

data = ''.join(buf) # più efficiente della tua soluzione
# parsing dei dati, oppure puoi usare un feed parser


Ciao  Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAlA1PGwACgkQscQJ24LbaUQTngCfSGCBCyjYeARZeillYurm5/7D
qY0An05PAZkkmN0YC1yFW78R7lqZ0Nvl
=vdUm
-----END PGP SIGNATURE-----


Maggiori informazioni sulla lista Python