1. 程式人生 > >TCP/IP網路程式設計 課後題(一)第一章

TCP/IP網路程式設計 課後題(一)第一章

3)Linux中,對套接字資料進行I/O時可以直接使用檔案I/O的相關函式;而在Windows則不可以。原因?

答案:在Linux世界裡,socket也被認為是檔案的一種。而Windows與Linux不同,,是要區分socket和檔案的。

4)建立套接字後一般會給它分配地址,為什麼?為了完成地址分配需要呼叫哪個函式?

答案:套接字被建立之後,只有為其分配了IP地址和埠號後,客戶端才能夠通過IP地址及埠號與伺服器端建立連線。
呼叫bind函式來完成地址分配。

6)底層檔案I/O函式與ANSI標準定義的檔案I/O函式之間有何區別?

答案:檔案I/O 又稱為低階磁碟I/O,遵循POSIX相關標準。任何相容POSIX標準的作業系統上都支援檔案I/O。標準I/O被稱為高階磁碟I/O,遵循ANSI C相關標準。只要開發環境中有標準I/O庫,標準I/O就可以使用。(Linux 中使用的是GLIBC,它是標準C庫的超集。不僅包含ANSI C中定義的函式,還包括POSIX標準中定義的函式。因此,Linux 下既可以使用標準I/O,也可以使用檔案I/O)。
通過檔案I/O讀寫檔案時,每次操作都會執行相關係統呼叫。這樣處理的好處是直接讀寫實際檔案,壞處是頻繁的系統呼叫會增加系統開銷,標準I/O可以看成是在檔案I/O的基礎上封裝了緩衝機制。先讀寫緩衝區,必要時再訪問實際檔案,從而減少了系統呼叫的次數。
檔案I/O中用檔案描述符表現一個開啟的檔案,可以訪問不同型別的檔案如普通檔案、裝置檔案和管道檔案等。而標準I/O中用FILE(流)表示一個開啟的檔案,通常只用來訪問普通檔案。