-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Il 24/03/2012 13:21, Enrico 'Henryx' Bianchi ha scritto: > On Friday, March 23, 2012 08:31:50 PM Manlio Perillo wrote: >> Su IRC ricordo di averti consigliato di studiare le Netstrings, o simili. > > Si, ricordo anche io di questa discussione (di cui, pero`, non trovo traccia > nei miei log, probabilmente l'abbiamo fatta quando ero a lavoro), il fatto e` > che bene o male ho gia` una netstring, ovvero so come comincia la stringa > ('["' o '[{"') e so come finisce ('}]\n'),
Se sei sicuro che \n non compaia all'interno della stringa, allora sei a posto. > mentre della sua lunghezza direi > che non me ne faccio molto. La lunghezza ti serve per preallocare il buffer e sapere quanti bytes leggere, se vuoi delle buone prestazioni. > Il problema e` che in alcuni casi tale stringa non > mi arriva completa e mi crea grossi problemi, sia per il fatto che mi incarta > la lettura, sia per il fatto che si tratta di un dato perso e che devo > comunque recuperarlo, cosa che mi costringe a richiedere tutto il dataset > senza la garanzia di recuperare quello che mi manca. Daniele ti ha dato un suggerimento, vedi se dipende da quello. > In teoria potrei > risolvere facendo il controllo della corretta lunghezza della stringa (if > (data[:2] == '["' or data[:3] == '[{"') and (data[-3:] == '}]\n')) ed inviare > al client un comando di notifica che, in caso negativo, reinvia il dato > (sinceramente mi sembra un po' brutto, ma non vedo alternative) > > Enrico > P.S. che poi, se leggo i dati via netcat non ho alcun problema, ovvero le > stringhe mi arrivano complete > Utilizzando lo stesso "server" (processo che invia i dati)? In questo caso secondo me il problema รจ che ti trovi un '\n' dentro una stringa... Prova a mettere qualche assert: for item in res.get(): assert "\n" not in item n = conn.send(item + "\n") assert n == len(item) + 1 Comunque usando i socket a basso livello ci sono molte cose a cui badare. Ciao Manlio -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk9tzxAACgkQscQJ24LbaUSQXwCcDHk4qt+eFXd9eZcBgJ62eydE tLMAn1EVWlyVzbXLi9WfgBuQ/dMin+it =vsWL -----END PGP SIGNATURE----- _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python