《TCP IP網路程式設計》尹聖雨 第一章習題

2021-08-15 22:16:11 字數 1397 閱讀 6574

**:

(1)套接字在網路程式設計中的作用是什麼?為什麼叫套接字?

網路程式設計就是編寫程式使兩台連網的計算機相互交換資料。在我們不需要考慮物理連線的情況下,我們只需要考錄如何編寫資料傳輸軟體。作業系統提供了名為「套接字」的部件, 套接字是網路資料傳輸用的軟體裝置。

我們把插頭插到插座上就能從電網獲得電力供給,同樣,為了與遠端計算機進行資料傳輸,需要連線到網際網路,而程式設計中的「套接字」就是用來連線該網路的工具。

(2)在伺服器端建立套接字後,會以此呼叫listen函式和accept函式。請比較並說明二者作用。

listen函式將套接字轉為可接受連線狀態,accept函式受理連線請求,並且如果在沒有連線請求的情況下呼叫該函式,則不會返回。直到有連線請求為止。二者存在邏輯上的先後關係。

(3)linux中,對套接字資料進行i/o時可以直接使用檔案i/o相關函式;而在windows中則不可以。原因為何?

在linux世界中,socket也被認為是檔案的一種,因此在網路資料傳輸過程中自然可以使用檔案i/o的相關函式。windows則與linux不同,是要區分socket和檔案的。因此在windows中需要呼叫特殊的資料傳輸相關函式。

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

套接字被建立之後,只有為其分配了ip位址和埠號後,客戶端才能夠通過ip位址及埠號與伺服器端建立連線。

呼叫bind函式來完成位址分配。

(5)linux中檔案描述符與windows的控制代碼實際上非常類似。請以套接字為物件說明它們的含義。

為了程式設計師與作業系統之間更好地溝通,檔案描述符或者控制代碼,只不過是為了方便稱呼作業系統建立的檔案或套接字而賦予的數字而已。

(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(流)表示乙個開啟的檔案,通常只用來訪問普通檔案。

(7)參考本書給出的示例low_open.c和low_read.c,分別利用底層檔案i/o和ansi標準i/o編寫檔案賦值程式。可任意指定賦值程式的使用方法。

《TCP IP網路程式設計》尹聖雨 第二章2 3習題

1 什麼是協議?在收發資料中定義協議有何意義?如果相隔很遠的兩人想展開對話,必須先決定對話方式。如果一方使用 那麼另一方也只能使用 而不是書信。可以說,就是兩人對話的協議。協議是對話中使用的通訊規則,上述概念擴充套件到計算機領域可整理為 計算機間對話必備通訊原則 簡言之,協議就是為了完成資料而定好的...

TCP IP 網路程式設計 第一章

服務端 第一步 呼叫socket函式建立套接字 第二步 呼叫bind函式分配ip位址和埠號 第三步 呼叫listen函式轉為可接聽狀態 第四步 呼叫accept函式受理可接聽狀態 include include include include include include void error h...

第一章 什麼是TCP IP

要回答什麼是協議,首先要回答什麼是網路。網路是計算機之間通過常用的傳輸介質 絕緣的金屬導線 線 無線網路 不需要線路 進行通訊的集合。網路協議就是一套通用規則,用來幫助定義複雜資料傳輸的過程。tcp ip 協議定義了網路通訊的過程,定義了資料單元的格式和內容,以便接收計算機能夠正確解釋接收到的訊息。...