【问题标题】:"NO IDENT RESPONSE" error when connecting to an IRC server连接到 IRC 服务器时出现“NO IDENT RESPONSE”错误
【发布时间】:2014-12-08 07:21:27
【问题描述】:

通常我会尝试使用 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,我做了一些小改动。

【问题讨论】:

  • “没有识别响应”并不是真正的错误。即使您使用桌面客户​​端,通常也会看到它。
  • 复制粘贴会让你头疼:)

标签: python sockets irc


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    Ident 是 UNIX 服务,二十年来无人使用。

    它用于在终端应用程序中进行终端服务器到远程服务器连接时识别远程用户。 Ident 对于现代互联网来说并不安全,所以没有人再使用它了。

    所以你已经击中了过去的幽灵。此外,如上述答案中所述,如果您发送正确的 NICK 命令,IRC 服务器会对您的客户端感到满意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-29
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      • 2012-06-25
      • 2020-01-22
      • 1970-01-01
      • 2011-01-10
      相关资源
      最近更新 更多