2009-10-20 12 views
6

Chcę połączyć prosty serwer TCP za pomocą Pythona i Twisted.Twisted: serwer tcp z przykładem producenta push?

Serwer uruchamia się i czeka na połączenie - mam już aplikację klienta - nie-python. Po nawiązaniu połączenia serwer rozpoczyna wysyłanie danych w pewnym przedziale (na przykład 1 s).

Serwer odczytuje dane z pliku statycznego (rekord na raz), powinienem być w stanie obliczyć tę część.

Zakładam, że użyłbym producenta push, aby rozpocząć przesyłanie danych po podłączeniu klienta.

Mam prosty serwer TCP z fabryki w skręcona i mogę reagować na connectionMade/dataReceived i tak dalej, ale nie mogę zrozumieć się jak podłączyć producenta Push.

Ktoś zna przykłady pokazujące producenta wypychającego z serwerem tcp w skręcie?

Odpowiedz

2

Co o czymś uproszczonym jak:

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() 

Ma twarde zakodowane dane, ale można powiedzieć, że czytanie z pliku zamiast nie jest twój problem. Jeśli możesz nam powiedzieć, co jest nie tak z tym nazbyt uproszczonym "serwerem", być może możemy zaoferować lepszą pomoc! -)

+0

+1 miło, nie widzę w tym nic złego, więc prawdopodobnie pójdę za przykładem. Zapytałem, ponieważ czytałem skręcone dokumenty i szukałem go, aby zobaczyć przykład producenta wypychanego z serwerem tcp ... ale masz rację, jeśli mój przykład jest wystarczająco dobry (tak, dodam czytanie z pliku, który nie jest problem ...) – stefanB

+0

@stefanB, OK, jeśli napotkasz problemy (np. że wywołanie snu zablokuje twój serwer w niepożądany sposób) daj nam znać (najlepiej edytując pytanie I dodając komentarz tutaj, więc Stack Overflow pozwoli mi wiem automatycznie ;-), a zobaczymy, co da się zrobić! -) –

+0

Myślałem, że jeśli przez następne 5 minut będę siedział w connectionMade() i będę wysyłać dane do klienta, prawdopodobnie nie otrzymam żadnych innych zdarzeń. , ale zobaczę, co się stanie (zależy od tego, ile czasu będę musiał się z nim bawić). – stefanB

4

Here to kompletny przykład producenta wypychającego. Został dodany do przekręconego svn jako przykładu.