[英]Improve a IRC Client in Python
我如何在使用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 。謝謝。
您已經有了所需的藍圖。 你在做:
if(line[0]=="PING"):
沒有理由,您無法使該方案接受PORT
, NICK
等的輸入。
另外,雖然1並不是非常Pythonic。 是的,它可以工作,但實際上沒有理由不使用True
。 沒什么大不了的,但是它使代碼更具可讀性。
因此,您希望用戶控制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
>>>
如果您嘗試執行響應用戶輸入的操作,則cmd
模塊可能會幫助您:
如果您對IRC協議本身感興趣,那么有關使用套接字在python中編寫IRC客戶端的本教程可能會有用:
如果您是Python的新手,那么IRC客戶端就是一項艱巨的任務,尤其是如果您以前從未使用過其他語言的類似客戶端。
我建議您查找線程,以便將IRC處理程序放在單獨的線程上,並在另一個線程上接收用戶輸入(如果兩個線程都在同一線程上執行,則一個線程會阻塞另一個線程,這很糟糕。經驗。)
不過,要回答您的問題,最簡單的從控制台中的用戶獲取輸入的方法是使用in =
raw_input()
,但是正如我所說的那樣,它不會與同一線程上的套接字很好地交互。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.