2015-04-03 48 views
1

在python 3.4.2中實現客戶端 - 服務器UDP通信時,碰到了解碼從客戶端發送到服務器的base64編碼號碼的問題。在套接字編程中Base64解碼python幫助

客戶機代碼:

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值?

請指教。

謝謝。

回答

0

你已經在服務器上做了一些額外的工作。在客戶端,編碼是一個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 
+0

謝謝。有效。 – manaswi31 2015-04-03 15:59:50