源程序:
import socket target_host = "www.baidu.com" # 127.0.0.1 target_port = 80 # 建立一個socket對象 client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 創建TCP連接 # 連接客戶端 client.connect((target_host,target_port))
client.send("GET / HTTP/1.1\r\nHost: baidu.com\r\n\r\n")
錯誤背景:程序想創建一個TCP連接,在發送數據的時候報錯,表明send函數需要傳byte類型值。
類型錯誤:TypeError: a bytes-like object is required, not 'str'
解決方法:
1、在數據前面加b,強制轉換
client.send(b"GET / HTTP/1.1\r\nHost: baidu.com\r\n\r\n")
2、發送數據的時候進行編碼
client.send(("GET / HTTP/1.1\r\nHost: baidu.com\r\n\r\n").encode())
這里我看了一篇前人MrYx的文章,說的很好 http://blog.csdn.net/yexiaohhjk/article/details/68066843