1. 程式人生 > 其它 >python2 與 python3 socket程式設計的區別

python2 與 python3 socket程式設計的區別

技術標籤:pythonpython3

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