CS模型之伺服器程序終止

2021-08-07 01:19:22 字數 1007 閱讀 7791

現在我們啟動我們的客戶/伺服器,然後殺死伺服器子程序。這是在模擬伺服器程序崩潰的情況,我們可從中檢視客戶將發生什麼。

(1)啟動伺服器和客戶端,正常回射。

(2)找到伺服器子程序id,並kill殺死它。子程序中所有開啟的描述符都被關閉。這導致向客戶傳送fin,而客戶tcp則相應ack。這就是tcp連線終止工作的前半部分。

(3)sugchld訊號被傳送給伺服器父程序,並得到正確處理。

(4)客戶上並沒有發生任何特殊之事。客戶tcp接收伺服器tcp的fin並相應乙個ack,然而問題是客戶程序阻塞在fgets呼叫上。

(5)我們再鍵入一行,str_cli呼叫writen,客戶tcp接著把資料發給伺服器,tcp允許這麼做,因為客戶收到fin只是表示伺服器程序已關閉了連線的伺服器端,從而不再往其中傳送任何資料而已。

(6)當伺服器端接收到tcp客戶資料時,相應rst。

(7)然而客戶程序看不到rst,因為它在呼叫writen後立即呼叫readline,並且收到(2)的fin,readline返回0。

(8)客戶端關閉時,所有開啟的描述符關閉

當fin到達套接字時,客戶正阻塞在fgets呼叫上,客戶實際在應對兩個描述符,套接字和使用者輸入,它不能單純阻塞在這兩個源中的某個特定源上。接下來講解select和poll可以解決這個問題。

C S模型(客戶 伺服器模型)

c s模型即客戶 client 伺服器 server 模型。1.特點 伺服器提供服務,客戶請求服務。2.客戶端和伺服器之間連線的數量對應關係 多個客戶程序可以同時訪問乙個服務程序,乙個客戶程序可以同時訪問多個伺服器程序提供的服務。3.客戶端和伺服器所在不同網路位置所適用的場合 執行在同乙個機器上的場...

併發伺服器模型 單程序伺服器

from socket import sersocket socket af inet,sock stream 重複使用繫結的資訊 sersocket.setsockopt sol socket,so reuseaddr 1 localaddr 7788 sersocket.bind localad...

伺服器模型 C S模型和P2P模型

呦呦切克鬧,煎餅果子來一套 tcp ip協議在設計和實現上並沒有客戶端和伺服器的概念,在通訊過程中所有機器都是對等的。但由於資源都被資料提供者所壟斷,所以幾乎所有的網路應用程式都很自然地採用了下圖所示的c s 客戶端 伺服器 模型。1 c s 客戶端 伺服器 模型 所有客戶端都通過訪問伺服器來獲取所...