2009-10-20 19 views
6

Quiero armar un servidor TCP simple usando Python y Twisted.Twisted: servidor tcp con ejemplo de productor de inserción?

El servidor se inicia y espera la conexión, ya tengo el cliente, la aplicación que no es de Python. Una vez que se establece la conexión, el servidor comienza a enviar datos en algún intervalo (por ejemplo, 1 segundo).

El servidor lee los datos de un archivo estático (un registro a la vez), debería poder descifrar esta parte.

Supongo que usaría el productor de inserción para comenzar a enviar datos una vez que el cliente está conectado.

Tengo servidor tcp simple con la fábrica en retorcida y puedo reaccionar a la conexión Hechos/datos recibidos, y así sucesivamente, pero no puedo entender cómo conectar el productor de inserción.

¿Alguien conoce algún ejemplo que muestre al productor de inserción con el servidor tcp en twisted?

Respuesta

2

¿Qué pasa algo simplista como:

thedata = ''' 
Questa mattina 
mi son svegliato 
o bella ciao, bella ciao, 
bella ciao, ciao, ciao 
questa mattina 
mi son svegliato 
ho trovato l'invasor! 
'''.splitlines(True) 

class Push(protocol.Protocol): 
    """This is just about the simplest possible protocol""" 
    def connectionMade(self): 
     for line in thedata: 
      if not line or line.isspace(): 
      continue 
      self.transport.write(line) 
      time.sleep(1.0) 
     self.transport.loseConnection() 

Esto tiene datos codificados de forma rígida, pero decir que la lectura de un archivo en lugar no es su problema. Si puede decirnos qué le pasa a este "servidor de inserción" excesivamente simplista, ¡tal vez podamos ofrecerle una mejor ayuda! -)

+0

+1 bueno, no veo nada de malo en eso, así que probablemente sigo el ejemplo. Le pregunté porque estaba leyendo documentos retorcidos y estaba buscando en Google para ver el ejemplo del productor de push con el servidor tcp ... pero tiene razón para mi propósito, el ejemplo que proporcionó es suficientemente bueno (sí, agregaré la lectura del archivo que no es un problema ...) – stefanB

+0

@stefanB, OK, si surge algún problema (por ejemplo, que la llamada de suspensión bloquee su servidor de forma indeseable) háganoslo saber (idealmente editando su pregunta Y agregando un comentario aquí para que Stack Overflow me permita saberlo automáticamente ;-) y veremos qué se puede hacer! -) –

+0

Estaba pensando que si para los siguientes 5 minutos me siento en connectionMade() y sigo enviando datos al cliente, probablemente no obtenga ningún otro evento ... .pero veré qué sucede (depende de cuánto tiempo tenga que jugar con él) – stefanB

4

Here es un ejemplo completo de un productor de inserción. Se ha agregado al svn retorcido como un ejemplo.

Cuestiones relacionadas