编码的流量python套接字

时间:2014-03-19 13:34:48

标签: python sockets encoding

我试图在python中设置一些发送编码流量的客户端和服务器代码。以下是使用base64编码数据的echo服务器示例:

    import base64,socket

    s=socket.socket()
    s.bind(("127.0.0.1",9090))
    s.listen(5)
    cls,addr=s.accept()
    data=cls.recv(1024)
    cls.send(base64.b64encode(data))
    cls.close()

我遇到的问题是有时大流量会破坏编码和解码过程,错误显示填充不正确。我可以使用哪些其他编码方法,在发送大型TCP流量时不会中断。

1 个答案:

答案 0 :(得分:0)

base64通过将每3个字节编码为4个字节来工作。解码时,需要4个字节并将它们转换回3个字节​​。所以......

  • 如果输入中剩余少于3个字节,则输出为 用=填充以填充4个字节。
  • 如果b64decode的输入不是4个字节的倍数,您将得到 这个例外。

最简单的解决方案是确保您发送的数据包始终是4个字节的倍数。