2009-10-20 42 views
6

我想用Python和Twisted组合简单的TCP服务器。扭曲:tcp服务器与推生产者的例子?

服务器启动并等待连接 - 我已经有客户端 - 非python应用程序。一旦建立连接,服务器开始以某个间隔(例如1秒)发送数据。

服务器从静态文件(一次记录)读取数据,我应该能够弄清楚这部分。

我假设我会使用推生产者开始推送数据一旦客户端连接。

我有简单的tcp服务器与工厂在扭曲,我可以反应connectionMade/dataReceived等,但我不能图出如何插入推制造商

任何人都知道任何示例显示与tcp服务器扭曲的推生产者?

回答

2

什么喜欢的东西简单化:

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

这有硬编码数据,但你说,从文件中读取它,而不是不是你的问题。如果你可以告诉我们这个过分简单的“推送服务器”有什么问题,也许我们可以提供更好的帮助!)

+0

+1不错,我没有看到任何问题,所以我可能会效仿这个例子。我问,因为我正在阅读扭曲的文档,并用Google搜寻推文制作人的例子,但是你对我的目的是正确的,你提供的例子是足够好的(是的,我会添加阅读文件不是一个问题......) – stefanB

+0

@stefanB,好吧,如果你想出了问题(例如睡眠呼叫以不希望的方式阻塞你的服务器)让我们知道(理想情况下,编辑你的问题,并在这里添加一个评论,所以Stack Overflow会让我 - ) –

+0

我在想,如果说接下来的5分钟我坐在connectionMade()并不断发送数据给客户端,我可能不会得到任何其他事件..但是我会看到会发生什么(取决于需要花费多少时间) – stefanB

4

Here是一个推送生产者的完整示例。它已被添加到扭曲的svn作为一个例子。