[Python] Socket e lettura dati
Enrico 'Henryx' Bianchi
henryx_b a yahoo.it
Sab 24 Mar 2012 14:47:37 CET
On Saturday, March 24, 2012 01:21:28 PM Enrico 'Henryx' Bianchi wrote:
> 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)
Ok, direi di aver raggiunto un punto:
Lato client:
for item in res.get():
while True:
conn.send(item + "\n")
result = conn.recv(8192)
if json.loads(result)["result"] == "ok":
break
Lato server:
while True:
data = conn.makefile().readline()
if not data:
break
if (data[:2] == '["' or data[:3] == '[{"') and (data[-3:] == '}]\n'):
conn.send(json.dumps({"result": "ok"}))
datajson = json.loads(data.decode("utf-8"))
if type(datajson[0]) == dict:
if datajson[0].values()[0]["attrs"]["type"] == "file":
files.append(data)
elif datajson[0].values()[0]["attrs"]["type"] == "directory":
dirs.append(data)
else:
if datajson[1]["attrs"]["type"] == "file":
files.append(data)
elif datajson[1]["attrs"]["type"] == "directory":
dirs.append(data)
else:
conn.send(json.dumps({"result": "ko"}))
La cosa, come ho detto, non mi piace molto in quanto mi sembra una forzatura,
ma devo dire che funziona e quindi posso anche accontentarmi (c'e` da dire che
dovrei aggiungere dei controlli in quanto rischio un loop infinito nella
lettura dei dati, pero` per ora va bene)
Enrico
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome: signature.asc
Tipo: application/pgp-signature
Dimensione: 836 bytes
Descrizione: This is a digitally signed message part.
URL: <http://lists.python.it/pipermail/python/attachments/20120324/5df3abbb/attachment.pgp>
Maggiori informazioni sulla lista
Python