[Python] Socket e lettura dati

Manlio Perillo manlio.perillo a gmail.com
Ven 23 Mar 2012 20:31:50 CET


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

Il 23/03/2012 19:40, Enrico 'Henryx' Bianchi ha scritto:
> Mi ritrovo con un problema rognoso nella lettura dei dati via socket. Via 
> client, uso questi metodi per inviare i dati:
> 
> def get(self):
>    [... a great effort ...]
>    yield json.dumps([result], ensure_ascii=False)
> 
> for item in res.get():
>     conn.send(item + "\n")
> 
> Via server, uso questo codice per leggere i dati:
> 
> while True:
>     data = conn.makefile().readline()
>     if not data:
>         break
>     datajson = json.loads(data.decode("utf-8"))
> 
> Ora, il problema e` che la prima riga la leggo correttamente, dalla seconda in 
> poi mi vengono riportate righe spezzate, mandando la conversione da stringa a 
> JSON in pappa, con conseguente errore. Come risolvo?

Devi inventarti un protocollo più corretto per inviare i dati.
Separare i vari "record" con "\n" non è molto furbo, perchè è un
carattere che potrebbe essere presente nel record stesso.

Su IRC ricordo di averti consigliato di studiare le Netstrings, o simili.

> [...]


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

iEYEARECAAYFAk9sz6YACgkQscQJ24LbaUTRYgCdHT0hgQFVoujv2flx6nq9mSrp
LGsAn2u3erUtbHWCMuCOxrHfsY+rOtb9
=JPYn
-----END PGP SIGNATURE-----


Maggiori informazioni sulla lista Python