一个喜剧简单的python程序上的IRC连接错误

我今天开始尝试制作一个涉及IRC日志的相对复杂的程序.无论我做了什么,我都得到了:

['ERROR', ':Closting', 'Link:', *******identifying details**********,'(Connection', 'timed', 'out')'

我认为简化一切都可以帮助我从中学习,但即使有这个非常简单的程序,我仍然会收到这个错误:

import sys
import socket
import string

HOST="irc.freenode.net"
PORT=6667
NICK="nick"
IDENT="nick"
REALNAME="realname"
readbuffer=""

s=socket.socket( )
s.connect((HOST, PORT))
s.send("".join(["NICK",NICK,"\r\n"]).encode())
s.send("".join(["USER %s %s bla :%s\r\n" % (IDENT, HOST, REALNAME)]).encode())

while 1:
    readbuffer=readbuffer+s.recv(1024).decode()
    temp=str.split(readbuffer, "\n")
    readbuffer=temp.pop( )

    for line in temp:
        line=str.rstrip(line)
        line=str.split(line)
        if(line[0]=="PING"):
            s.send("".join(["PONG ",line[1], "\r\n"]).encode())
        print (line)

我现在非常确定我正在解决人们在这里发布的虚拟代码(几乎在其他地方.我做错了什么?

解决方法:

仔细看看这行代码:

s.send("".join(["NICK",NICK,"\r\n"]).encode())

如果你用print替换s.send,你会发现它发送的字符串是这样的:

NICKnick<CR><LF>

没有空间!这使得它成为无效命令,并使注册失败.在某些时候,服务器放弃接收您的有效注册,因此向您发送错误并关闭连接.所以请确保包含空格:

s.send("".join(["NICK ",NICK,"\r\n"]).encode())

至少你会发送有效的注册.

上一篇:python – socket.error:[Errno 10054]


下一篇:python – IRC bot功能