網路程式設計 15 套接字和標準IO

2021-08-31 20:48:42 字數 1638 閱讀 6593

1。 標準io函式具有良好的移植性,這些函式都是按照ansi c標準定義的

2。標準io函式可以利用緩衝提高效能

建立套接字時作業系統會準備io緩衝,此緩衝在執行tcp協議時發揮著重要的作用。

若使用標準io函式,將得到額外的另一緩衝的支援

可以看到,使用標準io函式傳輸資料時,經過兩個緩衝

例如通過fputs函式傳輸字串「hello」,首先將資料傳遞到標準io函式的緩衝,然後將資料移到套接字輸出緩衝,最後將字串傳送到對方主機。

tcp傳輸中丟失資料時將再次傳遞,而再次傳送資料則意味著在某地儲存了資料。究竟在哪呢?——套接字的輸出緩衝

與之相反,使用標準io函式緩衝的主要目的是為了提高效能。可以有兩種角度說明效能的提高:

比較1個位元組資料傳送10次(10個資料報)和10個位元組傳送1次的情況。

傳送資料時使用的資料報中含有頭資訊。頭資訊與資料大小無關,是按照一定格式填入的。假設頭資訊占用40個位元組,那麼有:

如果使用未提供緩衝的read&write函式傳輸資料,向目的地傳送需要花費很長時間

如果用標準io函式fputs和fgets函式複製檔案,是一種基於緩衝的複製,就很快

可以想象,在實際網路環境中將產生更大的區別。

1。不容易進行雙向通訊

2。有時可能頻繁呼叫fflush函式

3。需要以file結構體指標的形式返回檔案描述符

開啟檔案時,如果希望同時進行讀寫操作,則應以r+、w+、a+模式開啟。但因為緩衝的緣故,每次切換讀寫工作狀態時應呼叫fflush函式。

而且,為了使用標準io函式,需要file結構體指標。而建立套接字時預設返回檔案描述符,需要將檔案描述符轉化為file指標。

為了使用標準io函式,需要file結構體指標。而建立套接字時預設返回檔案描述符,需要將檔案描述符轉化為file指標

通過fdopen函式將建立套接字時返回的檔案描述符轉換為標準io函式中使用的file結構體指標

函式fileno

《網路程式設計》 第15章 套接字和標準 I O

系統讀寫函式 read write 標準i o函式 fgets fputs 系統讀寫函式不帶緩衝區,而標準i o函式自帶緩衝區。在讀寫比較大的檔案的時候,標準i o函式更快。辨 系統函式 讀寫的輸入是 檔案描述符 標準i o函式 讀寫的輸入是 file 結構體指標。include int fgetc...

網路程式設計 03 套接字和位址

socket到底是什麼?網路程式設計中到底如何理解socket,先看下面的圖 上面的圖表達了網路程式設計中客戶端和伺服器模型的核心邏輯。伺服器端 首選伺服器端要先初始化號好socket,之後伺服器端執行bind函式將自己的服務能力繫結在乙個特定的位址和埠上,緊接著伺服器端呼叫listen函式將原先的...

網路程式設計7 套接字關閉

close 函式 int close int sockfd close函式會對套接字引用計數減一,一旦發現套接字引用計數到0,就會關閉tcp兩個方向的資料流,並徹底釋放套接字 在輸入方向上,系統核心會將套接字設定為不可讀,任何讀操作都會返回異常 在輸出方向上,系統核心嘗試將傳送緩衝區的資料傳送給對端...