【问题标题】:Base64 decoding python help in socket programmingBase64解码python在socket编程中的帮助
【发布时间】:2015-06-08 04:27:20
【问题描述】:

在 python 3.4.2 中实现客户端-服务器 UDP 通信时,遇到了解码从客户端发送到服务器的 base64 编码数字的问题。

客户端代码:

x = 10
y = 15
z = x + y
print("z value ",z) 
encoded = base64.b64encode(bytes(str(z), 'ascii'))
print('encoded z', encoded)
sock = socket.socket(socket.AF_INET, #Internet 
                    socket.SOCK_DGRAM) #UDP

sock.sendto(encoded, (UDP_IP, UDP_PORT))

服务器:

sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #UDP
sock.bind((UDP_IP, UDP_PORT))
while True:
   z, addr = sock.recvfrom(1024) #buffer size is 1024 bytes
   decode = base64.b64decode(bytes(str(z),'ascii'))
   print("Received message:", z, decode)
   if not z:break

客户端的“编码值”和服务器端接收的“z”值相同。 但是在 decode = base64.b64decode(bytes(str(z),'ascii')) 上 如何在服务器端正确解码和显示 z 值?

请指教。

谢谢。

【问题讨论】:

    标签: python sockets python-3.x client server


    【解决方案1】:

    您的服务器中正在进行一些额外的工作。在客户端中,encoded 是一个 base64 编码的字节字符串。这就是您发送到套接字的内容,这就是服务器输出的内容;一个 base64 编码的字节字符串。您的代码很好,但是您不小心通过修改 z 将消息弄乱了。这是您的服务器代码,已更正:

    sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #UDP
    sock.bind((UDP_IP, UDP_PORT))
    while True:
      z, addr = sock.recvfrom(1024) #buffer size is 1024 bytes
      decode = base64.b64decode(z)
      print("Received message:", z, decode)
      if not z:break
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      • 2012-11-13
      相关资源
      最近更新 更多