这个程序很简单,它的目的是连接到一个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()
发布于 2011-02-28 01:44:19
您使用的是Python3,而脚本是为Python2编写的。快速解决方法是通过在字符串字面值字节之前添加一个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")
在Python3中,str
是一个字符序列。bytes
是一个字节序列。
编辑:我认为Jean指的是socket.send
不能保证发送所有字节的事实。解决这个问题的捷径是使用sendall
。
发布于 2011-02-28 01:45:23
假设您使用的是Python 3.x:
您必须通过套接字发送bytes
,而不是通过str
。
irc.send(b"NICK PyBot\r\n")
要很好地解释bytes
与str
的区别,请参阅Dive Into Python3的Strings chapter。
https://stackoverflow.com/questions/5137433
复制相似问题