我正在试验一下IRC服务器/客户端的扭曲库。我发现了一些如何实现IRC客户端的好例子,但似乎在服务器端找到了很好的东西。任何人都可以提供一些有关如何创建一个基本的IRC服务器扭曲的见解吗?扭曲的IRC服务器的好例子?
编辑:这是什么建设?我在这里做正确的方向吗?
from twisted.internet.protocol import ServerFactory
from twisted.internet import reactor
from twisted.words.protocols.irc import IRC
class IRCServer(IRC):
def connectionMade(self):
print "client connected"
def handleCommand(self, command, prefix, params):
print "handle comm"
IRC.handleCommand(self, command, prefix, params)
def dataReceived(self, data):
print "data: %s" % data
IRC.dataReceived(self, data)
def irc_unknown(self, prefix, command, params):
print "%s, %s, %s, IRC UNKNOWN" % (prefix, command, params)
def irc_USER(self, prefix, params):
print "USER: %s, %s" % (prefix, params)
def irc_NICK(self, prefix, params):
print "NICK: %s, %s" % (prefix, params)
class IRCServerFactory(ServerFactory):
protocol = IRCServer
factory = IRCServerFactory()
reactor.listenTCP(8002, factory)
reactor.run()
当我尝试加入频道时,我永远无法做到。我得到一个错误,涉及到没有处理程序的命令,所以我写了irc_USER和irc_NICK方法,但仅仅是摆脱了错误,它没有解决不连接/不工作的问题。
那么你是说我正朝着正确的方向发展,但我需要继续添加功能/方法来支持完整的协议?或者从零开始,而不是使用words.protocols.irc.IRC,并使用words.Service?我有点困惑,为什么有twisted.service,然后twisted.irc呢?哪一个是适合的? – themaestro 2010-06-30 12:09:34
twisted.words.service的意图是你可以在其上建立一个IRC服务器。意图与现实之间可能存在差距;这是Twisted的一部分,没有被广泛使用。这并不意味着twisted.words.service不会为你工作,因为这取决于你的目标是什么。 至于为什么有twisted.words.protocols.irc.IRC和twisted.words.service,这很容易 - 前者被用作后者实现的基础。 – 2010-07-01 01:06:56