Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Twisted:从文件读取并作为TCP服务器发送_Python_Network Programming_Twisted - Fatal编程技术网

Python Twisted:从文件读取并作为TCP服务器发送

Python Twisted:从文件读取并作为TCP服务器发送,python,network-programming,twisted,Python,Network Programming,Twisted,我是Twisted的新手,但它看起来对我的项目很有希望 我想编写一个Python Twisted应用程序,它每x秒从文本文件中读取一条记录,并在TCP端口(充当TCP服务器)上侦听。如果没有客户端连接到TCP服务器,则记录将被丢弃。如果一个或多个客户端连接到TCP服务器,则记录将发送到所有客户端(所有客户端将接收相同的文本文件行) Twisted能否通过合理的LOC量实现这一点 有人能举个例子吗 谢谢 Twisted的文档中包含了如何使用的信息。它还包括一个关于如何操作的信息。这应该涵盖你需要知

我是Twisted的新手,但它看起来对我的项目很有希望

我想编写一个Python Twisted应用程序,它每x秒从文本文件中读取一条记录,并在TCP端口(充当TCP服务器)上侦听。如果没有客户端连接到TCP服务器,则记录将被丢弃。如果一个或多个客户端连接到TCP服务器,则记录将发送到所有客户端(所有客户端将接收相同的文本文件行)

Twisted能否通过合理的LOC量实现这一点

有人能举个例子吗

谢谢
Twisted的文档中包含了如何使用的信息。它还包括一个关于如何操作的信息。这应该涵盖你需要知道的大部分内容。

让·保罗

谢谢你的回答。 下面是我总结的内容。程序正在向连接到服务器的一个或多个客户端发送带有时间戳的字符串。在这种情况下,从文件同步读取非常简单,所以我只使用带有时间戳的固定字符串

我的下一步是将datetime.datetime.now()函数调用替换为对web服务的调用。基本上我想创建的是一种代理

  • 客户机与web服务,并每x秒调用一次以获取数据

  • TCP服务器与一组客户端相比,可以连续地流式传输数据,或者更好地说,一旦新的数据块可用(如下例所示)

问题是:

你能给我举一个类似系统的例子吗

如何使用Twisted的TCPClient功能将runEverySecond()方法调用与对web服务的异步调用结合起来

谢谢

C


这应该是一个新问题。我会回答你关于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()