python - 通过类,通过套接字发送字节。由于某种原因 socket.sendall(data) 将字节附加到数据中。使另一端无法解码
问题描述
正如标题所说,每当我尝试发送数据时,socket.sendall(arg) 都会在数据中添加一堆字节。它似乎至少部分是定义该方法的类的属性。
以下是代码的相关位:
class Client:
NICK = ''
HOST = '127.0.0.1'
PORT = 65000
BUFSIZ = 4096
CONNECTION = None
def __init__(self, nick_name):
try:
self.NICK = nick_name
...
def send_n(self, data):
print("Sending:", data)
self.CONNECTION.sendall(data)
class Server:
def relay_game(self):
players = self.HANDLER.recv(self.BUFSIZ)
print("Received:", players)
print("SERVER SIDE DATA:", players.decode())
def run_handler():
h = client.Client("HANDLER")
data = (b'test')
print("Calling with:", data)
h.send_n(data)
这是输出:
Calling with: b'test'
Sending: b'test'
Received: b'\x80\x03X\x07\x00\x00\x00HANDLERq\x00.test'
如您所见,在从客户端函数“send_n”发送到服务器函数“relay_game”时,一堆字节被添加到“数据”中。我说部分字节来自客户端属性的原因是因为 NICK 值,在这种情况下为“HANDLER”,存在于接收部分中。
有谁知道为什么会这样?解决它的可能解决方案是什么?
谢谢你的时间。
解决方案
我在其他地方得到了一些提示并弄清楚了。
之前发送了一条包含文字“HANDLER”的腌制消息,服务器未收到该消息。当服务器随后开始侦听时,两条消息都已发送。
推荐阅读
- javascript - 如何在Javascript中制作一个使尺寸变大的按钮?
- java - 如何从 quickfixj 中的重复组中获取价值
- laravel - 分配 ID 以在表上创建“查看详细信息”以链接到视图
- javascript - Electron 中奇怪的 IPC 消息传递行为
- java - 合并排序返回一个包含“0”的大小为 1 的数组,而不是一个已排序的数组
- reactjs - ReactJS NextJS - 使用客户端路由持久化会话信息
- tensorflow - TensorFlow:未实现:不支持将字符串转换为浮点数
- ajax - 如何使用内置的 vue 和 ajax 表单在sails.js 中进行多选工作?
- python - 如何自动化或验证智能家居设备
- python - Python将YYYYMMDD字符串转换为YYYY-MM-DD字符串而不使用日期时间