【发布时间】:2021-12-24 05:44:57
【问题描述】:
我在将字节数组发送到套接字时遇到问题。我正在尝试登录游戏服务器,我需要使用字节指定游戏版本。这就是我所拥有的:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.ioctl(socket.SIO_KEEPALIVE_VALS, (1, 10000, 10000))
s.connect(("127.0.0.1", 25565))
handshake = bytearray([6,0,340,0,0,69,2]) #2nd index specifies the game version (340)
s.send(handshake)
#[...]
问题是我得到了这个错误:
Traceback (most recent call last):
File "c:\Users\Leon\Desktop\mc\mc_protocol.py", line 11, in <module>
handshake = bytearray([6,0,340,0,0,69,2])
ValueError: byte must be in range(0, 256)
那么有没有办法将字节发送到高于 256 的套接字?谢谢。
【问题讨论】:
-
一个“字节”是一个介于 0 和 255 之间的整数。如果您需要发送一个整数,那么您需要知道服务器希望如何接收它。例如,它可能是一个 16 位整数(即 2 个字节)或一个 32 位整数(4 个字节),或者完全是其他的东西。
-
这不是 Python 的限制,这是由于一个字节只包含 8 位。
标签: python arrays sockets byte