Python Twisted:从文件读取并作为TCP服务器发送
我是Twisted的新手,但它看起来对我的项目很有希望 我想编写一个Python Twisted应用程序,它每x秒从文本文件中读取一条记录,并在TCP端口(充当TCP服务器)上侦听。如果没有客户端连接到TCP服务器,则记录将被丢弃。如果一个或多个客户端连接到TCP服务器,则记录将发送到所有客户端(所有客户端将接收相同的文本文件行) Twisted能否通过合理的LOC量实现这一点 有人能举个例子吗 谢谢Python Twisted:从文件读取并作为TCP服务器发送,python,network-programming,twisted,Python,Network Programming,Twisted,我是Twisted的新手,但它看起来对我的项目很有希望 我想编写一个Python Twisted应用程序,它每x秒从文本文件中读取一条记录,并在TCP端口(充当TCP服务器)上侦听。如果没有客户端连接到TCP服务器,则记录将被丢弃。如果一个或多个客户端连接到TCP服务器,则记录将发送到所有客户端(所有客户端将接收相同的文本文件行) Twisted能否通过合理的LOC量实现这一点 有人能举个例子吗 谢谢 Twisted的文档中包含了如何使用的信息。它还包括一个关于如何操作的信息。这应该涵盖你需要知
Twisted的文档中包含了如何使用的信息。它还包括一个关于如何操作的信息。这应该涵盖你需要知道的大部分内容。让·保罗 谢谢你的回答。 下面是我总结的内容。程序正在向连接到服务器的一个或多个客户端发送带有时间戳的字符串。在这种情况下,从文件同步读取非常简单,所以我只使用带有时间戳的固定字符串 我的下一步是将datetime.datetime.now()函数调用替换为对web服务的调用。基本上我想创建的是一种代理
- 客户机与web服务,并每x秒调用一次以获取数据
- TCP服务器与一组客户端相比,可以连续地流式传输数据,或者更好地说,一旦新的数据块可用(如下例所示)
这应该是一个新问题。我会回答你关于LoopingCall和web客户端的问题,除了在这个小小的评论框中没有太多的空间来回答;)。
from twisted.internet import protocol, reactor
from twisted.internet import task
import datetime
class Stream(protocol.Protocol):
def __init__(self, f):
self.factory = f
def connectionMade(self):
self.start = True
def forward(self, data):
if self.start:
self.transport.write(data)
class StreamFactory(protocol.Factory):
def __init__(self):
self.connections = []
def buildProtocol(self, addr):
s = Stream(self)
self.connections.append( s )
return s
def runEverySecond(self):
for c in self.connections:
c.forward( str(datetime.datetime.now()) )
f = StreamFactory()
l = task.LoopingCall(f.runEverySecond)
l.start(1.0) # call every second
reactor.listenTCP(8000, f)
reactor.run()