我們常說的計算機網路通訊,值得是兩台,或者多台計算機間,進行資料傳輸。
從計算機網路發展至今,人們使用了很多協議,但是最常用的還是tcp/ip協議,實際上這是一組協議。
當然使用python做網路程式設計的時候,我們通常都會在tcp/ip協議上面程式設計。也就是我們不需要關心,tcp/ip層真正傳輸層協議
socket
通常我們可以這麼理解socket -->用來標識遠端主機上面的某乙個程序。
當我們的客戶端請求,傳送到伺服器的網口上面去之後,作業系統讓哪個程序去處理它呢?
socket解決的就是這個問題。
就相當於,我們去大廈裡面找乙個公司一樣,通常都會有xx大廈幾樓幾零幾。
socket在伺服器角度來看,其實就是乙個檔案(unix/linux),準確的說,是乙個檔案描述符(一般指的就是檔案,或者類似檔案的實體)
對socket的操作,其實跟對檔案的操作是極其相似的比如recv()和read()
'''問題:如果想在小吃街開一家包子鋪,總共需要幾步
'''# 取得經營許可證--->建立socket物件吧
sock = socket.socket(socket.af_inet,socket.sock_stream)
#找一家鋪子開張-->監聽socket
sock.bind(('localhost',8080))
sock.listen(5)
#開張while true:
#等客上門啊
connetction,address = sock.accept()
#connetction,address 分別是客戶端物件和客戶端位址44
handle_request(connetction)
connetction.close()
if __name__ == '__main__':
main()
socket 的建立
我們可以看看這三行**,最簡單的socket的客戶端**
#1 在python中我們想建立socket的時候 可以直接匯入socket模組 通過例項化來獲得socket物件
#2 我們首先例項化了socket.socket,並且例項化過程中傳遞了兩個引數 這裡的af_inet 值得是通訊型別 這裡指的是ipv4 而sock_steram 值得是協議 這裡指的是tcp協議
#getservbyname 這個函式 預設維持乙個庫,可以獲取某個協議監聽的tcp埠號 當然這個協議監聽的埠號 是標準的 我們這裡獲取的http 當然你也可以換成udp
socket 的異常
python 的socket 的模組定義了四種錯誤
1> 與一般i/o的通訊問題有關的 socket.error
2>與查詢位址有關的socket.herror
4>與在乙個socket上呼叫的settimeout()後處理超時有關的sock.timeout(需要2.3或者更高版本)
當然我們能這些都是我們在大部分情況下能預見的錯誤
但是在網路程式設計中,有的時候通訊出現問題,卻沒有產生異常,因為對方沒有傳回錯誤
網路程式設計 01
一 tcp ip 1 tcp ip協議的理解 網路傳輸協議 tcp 基於位元組流的傳輸層 通訊協議,主要用於發現傳輸中的錯誤,要去重新發 ip 網路層協議。2 名詞的理解 ip 網路層的唯一識別id。tcp 面向連線層的協議,需要三次握手才能建立通訊。分別是 客戶端 向伺服器傳送 同步訊號,即告訴伺...
網路程式設計 01
網路程式設計 網路目的 資料的傳輸 網路資料傳輸是乙個複雜的過程 iso 國際標準化組織 osi 七層模型 網路通訊標準化流程 應用層 提供使用者服務,具體內容由特定程式規定 表示層 資料的壓縮優化 會話層 建立應用連線,選擇傳輸層服務 傳輸層 提供不同的傳輸服務,流量控制 網路層 路由選擇,網路互...
網路程式設計01
軟體架構的兩種方式 c s架構 client 客戶端 基於網路 server 服務端 b s架構 browser 客戶端 基於網路 server 服務端 ps 1.服務端和客戶端都必須有唯一的位址,但是服務端的位址必須是繫結的 2.服務端必須要24小時對外提供服務 3.服務端要能支援併發 網路程式設...