要進行網路通訊,需要建立起通訊雙方的連線,連線的雙方分別稱為客戶端和服務端,在python中,使用套接字socket來建立起網路連線。
套接字包含在socket模組中:
import socket
socket.socket()
對於客戶端和服務端,都是使用socket來建立連線的,但是在使用行為上,客戶端和服務端會有一些不一樣。
服務端建立需要四個步驟:新建socket、繫結ip和埠(bind)、監聽連線(listen)、接受連線(accept)。
客戶端建立則簡單一些,僅需兩個步驟:新建socket、連線服務端(connect)。
當網路連線上以後,客戶端和服務端就可以進行資料通訊了,套接字通過send()函式傳送資料,通過recv()函式接收資料。
服務端:
客戶端
接著在乙個終端先執行服務端:
python server.py
然後再在另外乙個終端執行客戶端:
python client.py
注意:如果在乙個終端同時啟動的話,服務端會報錯
在服務端的終端,將會輸出以下資訊:
connect addr:(『127.0.0.1』, 50382)
b』hello world. hello socket』
使用了python自帶的功能啟動了乙個http伺服器,並通過瀏覽器瀏覽到了這個http伺服器提供的頁面。在瀏覽的過程中,實際上是瀏覽器向http伺服器傳送了乙個http請求。
除了使用瀏覽器傳送http請求,通過**也可以向http伺服器傳送請求,python提供了相關的庫urllib,通過urllib包裡面的request,可以向其他http伺服器發起請求。
from urllib import request
response = request.urlopen(『 # 嚮慕課網官網發出請求
print(response) # ==>
請求成功的話,會得到乙個httpresponse,它是來自http伺服器的乙個回應,可以把這個回應的一些資訊列印出來。
狀態碼:
print(response.status) # ==> 200
狀態碼是乙個三位整數,在http協議的標準裡面,定義了很多狀態碼,其中200表示請求是正常的
python官方提供的urllib庫可以滿足一般情況下的http操作,但是urllib這個庫設計是用來處理url位址的,並不是專門處理http操作的包。因此,在很多場景下,一般會使用requests庫來進行http請求。
requests庫是著名的python第三方庫,使用requests庫,可以定製化你的http請求,包括請求方法,請求引數等等。
由於requests是第三方庫,因此在使用前,需要安裝。
pip install requests(如果安裝過程網速不怎麼好,可以使用國內映象進行安裝)
安裝完成後,使用requests庫來請求慕課網官網。
response = requests.get(『
列印狀態碼
print(response.status_code)
列印回應頭
print(response.headers)
在一般的使用上,requests和urllib沒有太大區別,但是在複雜的場景中,requests可以提供urllib無法提供的強大功能。因此,在使用上,建議使用requests庫代替urllib庫來進行http請求等的操作。
通過urllib或者requests請求後,會得到乙個httpresponse,httpresponse擁有狀態碼、回應頭等的資訊。
但我們知道,對於乙個頁面,通常是由文字、等資訊組成的,這些屬於乙個httpresponse的內容。
python網路程式設計 TCP網路程式設計
tcp程式設計 客戶端 import socket 1 套接字 tcp socket socket.socket socket.af inet,socket.sock stream 2 建立鏈結 tcp socket.connect 172.27.35.1 8080 3 傳送資訊 tcp socke...
python 網路程式設計
今天晚上學習了一下python的網路程式設計,實現了client向server傳送資料,server反饋資訊 python 3.3 版本 server from socket import class tcpserver object def init self,serverport self.se...
python網路程式設計
網路通訊是計算機之間的程序之間的通訊。tcp程式設計 tcp連線建立是雙向通道,客戶端與服務端都可以給對方傳送資料。建立tcp連線時,主動發起連線的叫客戶端,被動響應連線的叫服務端。建立乙個tcp的socket連線 用socket family,type 建立套接字獲得socket物件。family...