LINUX網路程式設計之設計流程

2021-06-08 22:35:11 字數 1013 閱讀 8317

1/基於多程序併發的面發連線伺服器軟體的設計(tcp)

(1) 不固定程序數的併發模型設計流程

步驟1.主程序利用socket建立主套接字server_socket並繫結到熟知的埠號。

步驟2.主程序呼叫accept()函式在熟知的埠號上等待客戶端的連線。

步驟3.當有客戶端請求到達是,主程序建立與該客戶之間的通訊連線,這是accept()返回乙個用於該連線的從套接字new_socket.

步驟4.主程序建立乙個新的從程序來處理該連線。

步驟5.主程序關閉套接字new_socket(此時,由於從程序中仍然開啟著從套接字,故主程序的關閉操作僅僅只是把從套接字new_socket的引用計數減1,而不是真正關閉該從套接字)。

步驟6.主程序返回步驟2(繼續等待客戶端的連線)。

步驟7.從程序關閉主套接字server_socket,(此時,由於主程序中仍然開啟著主套接字,故主程序的關閉操作僅僅只是把從套接字server_socket的引用計數減1,而不是真正關閉該主套接字)。

步驟8.從程序呼叫recv()和send()等操作與客戶端進行資料交換。

步驟9.資料互動結束,從程序關閉從套接字new_socket.從程序結束。

(2)固定程序數的併發模型設計

1/父程序的設計流程

步驟1.主程序建立主套接字server_socket並繫結到熟知埠。

步驟2.主程序建立給定數目的從程序。

步驟3.主程序呼叫wait()或者waitpid()等待從程序結束,一旦有從程序退出,則主程序立馬建立乙個新的從程序,以保證從程序在數量上維持不變。

2/從程序的設計流程

步驟1.從程序呼叫accept()等待客戶端的連線。

步驟2.當有客戶端請求連線到達時,從程序維持與該客戶端的通訊連線,同時accept()呼叫返回乙個新的從套接字new_socket.

步驟3.從程序呼叫recv()和send()等操作與客戶端進行資料互動。

步驟4.資料互動結束,從程序關閉從套接字new_socket.

步驟5.返回步驟1.

Linux網路程式設計之廣播

1.概念 前面介紹的tcp,udp都是單播方式,即一對一.而廣播是一台主機向區域網內的所有主機傳送資料。這時,同一網段的所有主機都能接收到資料。傳送廣播包的步驟大致如下 1 確定乙個傳送廣播的介面,如eth0 2 確定廣播的位址,通過ioctl函式,請求碼設定為siocgifbrdaddr得到廣播的...

Linux網路程式設計之廣播

1.概念 前面介紹的tcp,udp都是單播方式,即一對一.而廣播是一台主機向區域網內的所有主機傳送資料。這時,同一網段的所有主機都能接收到資料。傳送廣播包的步驟大致如下 1 確定乙個傳送廣播的介面,如eth0 2 確定廣播的位址,通過ioctl函式,請求碼設定為siocgifbrdaddr得到廣播的...

linux網路程式設計之Socket

一.socket socket可看作是使用者程序與核心網路協議的程式設計介面.socket可用於本機程序間的通訊,也可用於網路上不同主機間的程序通訊.下圖顯示的是各種網路協議的位址格式 1.struct socketaddr 通用位址結構 通過獲取某種socketaddr結構體的首位址,不需要知道具...