WINSOCK基礎知識(套接字描述符)

2021-06-02 06:14:03 字數 867 閱讀 5290

引子........

大多數的作業系統裡,需要i/o請求的應用程式請求作業系統開啟乙個檔案。系統就建立乙個檔案描述符提供給應用程式訪問檔案。從應用程式的角度看,檔案描述符是乙個整數,應用程式可以用它來讀寫檔案。下圖顯示,作業系統如何把檔案描述符實現為乙個指標陣列,這些指標指向內部資料結構。

對於每個程式系統都有一張單獨的表。精確地講,系統為每個執行的程序維護一張單獨的檔案描述符表。當程序開啟乙個檔案時,系統把乙個指向此檔案內部資料結構的指標寫入檔案描述符表,並把該錶的索引值返回給呼叫者 。應用程式只需記住這個描述符,並在以後操作該檔案時使用它。作業系統把該描述符作為索引訪問程序描述符表,通過指標找到儲存該檔案所有的資訊的資料結構。

正題......

套接字介面為網路通訊增加了乙個新的抽象,即套接字。和檔案一樣,每個活動的套接字都有乙個整數來標識,我們將其稱為套接字描述符。windows作業系統為每個程序維護乙個單獨的套接字描述符表。因此,應用程式可以擁有相同的檔案描述符和套接字描述符。

套接字api裡有個函式socket,它就是用來建立乙個套接字。套接字設計的總體思路是,單個系統呼叫就可以建立任何套接字,因為套接字是相當籠統的。一旦套接字建立後,應用程式還需要呼叫其他函式來指定具體細節。

了解套接字這個抽象概念的最簡單的方法是想象一下作業系統中的資料結構。當應用程式呼叫socket後,作業系統分配乙個新的資料結構來儲存通訊所需的資訊,並在程序套接字描述符表內增加乙個條目,儲存指向這個資料結構的指標。下圖顯示了呼叫socket後的程序套接字描述符表。這裡socket呼叫的引數指定了協議族為pf_inet,服務型別為sock_stream。

雖然套接字的內部資料結構包含很多字段,但是系統建立套接字後,大多數字字段沒有填寫。應用程式建立套接字後在該套接字可以使用之前,必須呼叫其他的過程來填充這些字段。

C 套接字程式設計基礎知識介紹

一 點睛 linux網路程式設計包括 使用者態網路程式設計和核心態網路程式設計。無論在windows平台還是linux平台,都對套接字實現了自己的一套程式設計介面。windows下的socket實現叫windows socket。linux下的實現有兩套 一套是伯克利套介面,起源於berkeley ...

套接字socket(基礎網路知識)

網路程式設計 首先既然提到了網路程式設計,不得不提到計算機網路,我們雖然不用像專門學習計算機網路的人那樣學習的那麼細緻,但是該了解的還是要了解。網絡卡 為了將計算機加入網際網路,每台機器都應該有網絡卡,mac位址是全球唯一的,具體怎麼檢視mac位址先開啟命令列 輸入如下指令 ipconfig all...

套接字基礎

1 什麼是套接字?2 internet 套接字的兩種型別 3 網路理論 4 結構體 5 本機轉換 6 ip 位址和如何處理它們 7 socket 函式 8 bind 函式 9 connect 函式 10 listen 函式 11 accept 函式 12 send 和recv 函式 13 sendt...