[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