Skip to main content
 首页 » 编程设计

python之连接到 IRC 服务器时出现 "NO IDENT RESPONSE"错误

2025年05月04日15langtianya

通常我会尝试使用 twisted 库进行类似的操作,但这不适用于 python 3 - 所以我尝试使用 sockets 库。该代码确实建立了连接,但服务器很快以“无身份响应”作出响应。我没有太多的网络编程经验,所以如果有人能指出我在这里犯的错误,我将不胜感激。我也很清楚有些功能/其他代码没有使用,或者我使用不一致。我只是想我会在这里粘贴我的全部代码以防相关。

import socket 
 
server = "irc.freenode.net" 
channel = "put channel here" 
nickname = "put nickname here" 
 
 
def encode(text): 
    return text.encode("ascii") 
 
 
def ping(): 
    irc_socket.send(encode("PONG :pingis\n")) 
 
 
def send_message(chan, msg): 
    irc_socket.send(encode("PRIVMSG " + chan + " :" + msg + "\n")) 
 
 
def join_channel(chan): 
    irc_socket.send(encode("JOIN " + chan + "\n")) 
 
def login(username='user', realname='Pythonist', hostname='Helena', servername='Server'): 
    irc_socket.send(encode("USER %s %s %s %s" % (username, hostname, servername, realname))) 
    irc_socket.send(encode("NICK " + nickname)) 
 
 
irc_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
irc_socket.connect((server, 6667)) 
login() 
join_channel(channel) 
 
while True: 
    buffer = irc_socket.recv(1024) 
    msg = str.split(str(buffer)) 
    if msg[0] == "PING": 
        irc_socket.send("PONG %s" % msg[1]) 
    print(msg) 

代码最初来自:http://wiki.shellium.org/w/Writing_an_IRC_bot_in_Python我做了一些小改动。

请您参考如下方法:

导致所有麻烦的微小的小问题:您在 login 中缺少换行符。 "USER %s %s %s %s" 应该是 "USER %s %s %s %s\n" 和 "NICK "+ nickname 应该是 "NICK "+ nickname + "\n"。服务器查找你的ident没有找到,然后下一步就是让你注册,但是你从来没有给它发送完整的一行,所以它一直在等待......等待......