改进Python中的IRC客户端
我想对我用Python写的IRC客户端进行一些改进。具体来说,我想让用户能够输入HOST、PORT、NICK、INDENT和REALNAME这些信息,以及消息内容。以下是程序的代码:
simplebot.py
import sys import socket import string HOST="irc.freenode.net" PORT=6667 NICK="MauBot" IDENT="maubot" REALNAME="MauritsBot" readbuffer="" s=socket.socket( ) s.connect((HOST, PORT)) s.send("NICK %s\r\n" % NICK) s.send("USER %s %s bla :%s\r\n" % (IDENT, HOST, REALNAME)) while 1: readbuffer=readbuffer+s.recv(1024) temp=string.split(readbuffer, "\n") readbuffer=temp.pop( ) for line in temp: line=string.rstrip(line) line=string.split(line) if(line[0]=="PING"): s.send("PONG %s\r\n" % line[1])
请记住,我刚开始学习Python开发。这个代码是我在这里找到的:http://oreilly.com/pub/h/1968。谢谢。
5 个回答
1
如果你想根据用户的输入来执行一些操作,可能可以试试 cmd
模块,它会对你有帮助:
如果你对IRC协议本身感兴趣,这个关于如何使用套接字在Python中编写IRC客户端的教程可能会对你有用:
2
你已经有了想要实现的蓝图。你正在做的是:
if(line[0]=="PING"):
没有理由不把这个方案改成可以接受 PORT
、NICK
等输入。
另外,虽然用1并不是很符合Python的风格。虽然这样也能工作,但其实用 True
更好。这样做没什么大不了的,但会让代码稍微更容易读懂。
2
所以你想让用户自己控制IRC客户端使用的连接信息?为了做到这一点,你需要在开始连接之前,先收集用户的输入,这可以通过使用raw_input函数来实现。
注意:raw_input会去掉输入末尾的换行符。
HOST = raw_input('Enter Host: ')
PORT = int(raw_input('Enter Port: '))
...对于所有你希望用户能够配置的值。
举个例子:
HOST = raw_input('Enter host: ')
print HOST
>>>
Enter host: stackoverflow.com
stackoverflow.com
>>>