2014-03-19 19 views
1

我想在python中设置一些客户端和服务器代码来发送编码流量。下面是使用base64编码数据的回波服务器的一个示例:编码的流量python套接字

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

编码的目的是什么?换句话说,为什么不只是发送原始数据呢? – NPE

回答

0

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

  • 如果有剩余的输入少于3个字节,输出为 获取与=填充,使其4个字节。
  • 如果b64decode的输入不是4字节的倍数,那么您将得到 这个例外。

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

+0

**请在审批建议的修改“改进”格式时注意。 [This Edit](http://stackoverflow.com/review/suggested-edits/4385056)引入了语法错误,应该被拒绝('/'操作符被删除)。 –