1. 程式人生 > >python學習之-socket(套接字)

python學習之-socket(套接字)

什麼是套接字socket

socket把傳輸層以下的協議都封裝成了簡單的介面,我編寫基於網路通訊的軟體只需要呼叫這些介面即可,寫出的程式自然是遵循tcp/udp協議的....

什麼是網際網路

網際網路=物理連線介質+網際網路通訊協議

ip+port就可以標識全世界範圍內獨一無二的一個基於網路通訊的軟體

為何要用socket
目標: 編寫一個C/S架構的軟體

server端必須具備:
1. 服務端需要穩定執行,一直對外提供服務
2. 服務端必須繫結一個固定的地址(這個固定地址就是ip+port(埠))
3. 服務端要支援併發

 

基於檔案型別的套接字家族

套接字家族的名字:AF_UNIX

unix一切皆檔案,基於檔案的套接字呼叫的就是底層的檔案系統來取資料,兩個套接字程序執行在同一機器,可以通過訪問同一個檔案系統間接完成通訊

基於網路型別的套接字家族

套接字家族的名字:AF_INET

(還有AF_INET6被用於ipv6,還有一些其他的地址家族,不過,他們要麼是隻用於某個平臺,要麼就是已經被廢棄,或者是很少被使用,或者是根本沒有實現,所有地址家族中,AF_INET是使用最廣泛的一個,python支援很多種地址家族,但是由於我們只關心網路程式設計,所以大部分時候我麼只使用AF_INET)

 

網路基本知識看這個連結:http://www.cnblogs.com/linhaifeng/articles/5937962.html(一定要看而且要理解,是網路程式設計的基礎)

 

為何學習socket一定要先學習網際網路協議:

1.首先:本節課程的目標就是教會你如何基於socket程式設計,來開發一款自己的C/S架構軟體

2.其次:C/S架構的軟體(軟體屬於應用層)是基於網路進行通訊的

3.然後:網路的核心即一堆協議,協議即標準,你想開發一款基於網路通訊的軟體,就必須遵循這些標準。

4.最後:就讓我們從這些標準開始研究,開啟我們的socket程式設計之旅

 

 

到底什麼是套接字socket,見圖示

PS:可以看到在應用層和傳輸層的中間加了一個抽象層,Socket把傳輸層以下的全部封裝好了,在寫程式的時候只要呼叫Socket的介面收發資料,寫出來的程式自然就是遵循網際網路協議的