Twisted: invio dati e file
« il: Luglio 15, 2011, 10:54 »
Salve a tutti, con twisted sto strutturando un piccolo servizio client-server, dove il client invia file di tre tipi, quindi il server deve riconoscere anche il tipo di file e pensavo di inviargli l'informazione dal client (avrei anche in mente di inviare altre informazioni, come l'ip del client e simili). Il codice di ricezione del server è:

[codice]def dataReceived(self, data):
      data=data.split('|||')
      self.OUTPUT=open('ricevuto.log', 'wb')
      self.OUTPUT.write(data[1])
      self.OUTPUT.close   
      self.transport.loseConnection()[/codice]       

Dal client:

[codice]def connectionMade(self):
      self.transport.write("tipo1|||")
      OUTPUT=open('dainviare.log', 'rb')
      data=OUTPUT.read(1024)
      while data:
         self.transport.write(data)
         data=OUTPUT.read(1024)
      OUTPUT.close[/codice]       

Cosa pensate di questa soluzione? Un modo più "elegante" potrebbe essere quello dell'uso di sendLine e rawDataReceiver per inviare le informazioni preliminari e successivamente i dati? Mi pare di aver capito che sendLine utilizzi un invio su linee e quindi separando i vari dati, a differenza del write semplice.
Per l'invio, nel caso di file di testo, pensavo di far leggere il file con readlines ed inviare riga per riga, ma questa tipologia con il while dovrebbe essere più generica. Voi come vi comportate con i file in generale e, soprattutto, quelli di grosse dimensioni?
Ho trovato in rete alcuni esempi di invii serializzati con pickle e stringIO ed ho letto qualcosa sulla documentazione per Perpective Brocker e volevo chiarirmi un pò le idee.

Grazie.
Saluti.