python2 與 python3 socket程式設計的區別
阿新 • • 發佈:2021-01-31
python2 與 python3 socket程式設計的一點小區別
python3 與python2 其實有很大的區別,但為了寫程式的人的方便,很多東西儘量還是按照python2 的函式,類以及方法來處理,但這裡面的編碼可能會有區別。前幾天為了改以前寫的一個socket 的東西,測試了python2 與 python3的在socket 方面的最基本的差別.
在python3 中socket 接受bytes, 所以必須手動呼叫encode 以及 decode 方法.
import sys import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(("whois.arin.net", 43)) #convert string to bytes, socket need bytes s.send((sys.argv[1] + "\r\n").encode()) #declares a bytes response = b"" while True: data = s.recv(4096) response += data if not data: break s.close() #convert bytes to string print(response.decode())
在python2 中的實現
import sys import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(("whois.apnic.net", 43)) s.send(sys.argv[1] + "\r\n") response = "" while True: data = s.recv(4096) response += data if not data: break s.close() print response