Base64解码python 有助于套接字编程

Base64 decoding python help in socket programming

在 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
客户端的

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

请指教

谢谢。

您的服务器正在进行一些额外的工作。在客户端,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