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
在 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