你好,我一直在做Python套接字编程。我要做的是向服务器发送一个名为“option”的字符串变量
这是客户端代码
option = "4"
client.send(option.encode())
我收到“错误UnicodeDecodeError:'utf-8'编解码器无法解码位置0中的字节0xff:无效的开始字节”
这是我的服务器代码
option = client.recv(512).decode()
服务器中的选项应该收到一个值为“4”的字符串,但正如我所说,我得到了一个错误。
有人知道怎么解决这个问题吗?提前谢谢
Tags:
我知道了!所以我改变了
对此
成功了!所以我的结论是客户端试图向服务器发送字符串。 我想要发送到服务器的是“4”,所以客户端尝试发送的块大小是1
我不确定,但这对我有用
由于网络编程通常包含多台可以有不同编码的机器,因此应该定义协议的编码。它可以是每个人都必须使用的单一编码(如今这是一个非常好的选择),也可以是协议本身中需要协商编码的方法
在您的情况下,您可以对其进行硬编码:
及
这仍然有一个明显的错误。recv接收的内容与发件人的大小不完全相同。如果您的编码字符是(比如)3个字节,则接收器可能会接收到部分字符。这意味着您需要某种方法对字符串进行去标记,以便双方都知道给定字符或字符串的结尾。但那是另一回事
有许多现有协议用于处理消息边界、编码等。HTTP、XMLRPC、Zeromq只是其中的一些。这些可能比推出自己的解决方案容易得多
相关问题 更多 >
编程相关推荐