程序很简单,它意味着连接到IRC房间。问题是,当我尝试将我的机器人连接到它时,它会给我标题中的错误。我不确定他们想要什么而不是字符串。我不确定缓冲区或字节是指什么。其他人已经使这个脚本工作,但它不适合我。注意:这不是一个恶意的irc机器人或其他什么。这只是一个基本网络的练习。
import socket
network = 'irc.rizon.net'
port = 6667
irc = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
irc.connect((network,port))
irc.send("NICK PyBot\r\n")
irc.send("USER Pybot Pybot Pybot : Python IRC\r\n")
irc.send("JOIN #pychat\r\n")
irc.send("PART #pychat\r\n")
irc.send("QUITE\r\n")
irc.close()
答案 0 :(得分:2)
你正在使用Python 3,而脚本是为Python 2编写的。快速修复是通过在它们之前添加b
来使字符串文字字节文字:
irc.sendall(b"NICK PyBot\r\n")
irc.sendall(b"USER Pybot Pybot Pybot : Python IRC\r\n")
irc.sendall(b"JOIN #pychat\r\n")
irc.sendall(b"PART #pychat\r\n")
irc.sendall(b"QUITE\r\n")
在Python 3中,str
是一系列字符。 bytes
是一个很好的字节序列。
编辑:我认为Jean指的是socket.send
无法保证发送所有字节的事实。 的快速解决方法是使用sendall
。
答案 1 :(得分:1)
假设您使用的是Python 3.x:
您必须通过套接字发送bytes
,而不是str
。
irc.send(b"NICK PyBot\r\n")
有关bytes
与str
的详细解释,请参阅Dive Into Python 3的Strings chapter。