在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