多个客户端的扭曲服务器

时间:2011-01-05 13:32:32

标签: python twisted

我想编写一个可以接受python(twisted)中的多个客户端的服务器。我已经非常熟悉使用标准python套接字模块的套接字编程,但是这里遇到了麻烦.. 我认为扭曲很难进入,我已经阅读了一些有关它的教程。 但我真的找不到的是一个接受多个连接的简单套接字服务器..任何人都可以帮忙吗?如果我在网上错过了一些有价值的信息,请告诉我,因为我正在拔头发..

非常感谢任何帮助,

Andesay

4 个答案:

答案 0 :(得分:12)

说,您想运行服务器接受端口9000上的客户端连接:

from twisted.internet import reactor, protocol

PORT = 9000

class MyServer(protocol.Protocol):
    pass

class MyServerFactory(protocol.Factory):
    protocol = MyServer

factory = MyServerFactory()
reactor.listenTCP(PORT, factory)
reactor.run()

如果你想测试连接到这个服务器,这里是客户端的代码(在不同的终端中启动):

from twisted.internet import reactor, protocol

HOST = 'localhost'
PORT = 9000

class MyClient(protocol.Protocol):
    def connectionMade(self):
        print "connected!"

class MyClientFactory(protocol.ClientFactory):
    protocol = MyClient

factory = MyClientFactory()
reactor.connectTCP(HOST, PORT, factory)

reactor.run()

您会注意到代码非常相似,只有我们为服务器使用Factory,为客户端使用ClientFactory,服务器需要在客户端需要连接时监听(listenTCP)(connectTCP)。祝你好运!

答案 1 :(得分:7)

我想,你没有得到扭曲的本质。如果您创建一个扭曲的套接字服务器,它默认可通过多个客户端连接。我会按顺序建议以下教程,然后阅读扭曲的文档。编写这些教程中给出的小片段,以了解实际发生的情况。

  1. Dave Peticola's twisted tutorial
  2. Itamar Shtull-Trauring's twisted presentation

答案 2 :(得分:2)

本教程是学习如何从头开始编写扭曲服务器的一个很好的(最好的)起点: http://twistedmatrix.com/documents/current/core/howto/tutorial/index.html

答案 3 :(得分:0)

Twisted是一个很棒的框架,但是这个(经常)意味着,对于简单的事情来说,这可能是一个非常难的......

这是事实。如果需要,您需要编写一个实现Resource的类,一个LineReceiver,然后将它附加到反应器中:

reactor.connectTCP(<HOST>, <PORT>, istance_of_your_class)