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



在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(字节(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

最新更新