網路程式設計(四)

2021-08-14 15:13:00 字數 1030 閱讀 6487

1. 掌握併發伺服器

多路復用是假的併發(本質上是序列處理),多程序或多執行緒實現才叫併發

伺服器建立子程序去處理使用者業務

併發伺服器:適用於使用者請求需要長時間解決完的情境

注意:子程序只處理使用者業務,所以關閉監聽套接字

父程序只接受新的連線,所以關閉鏈結套接字

父程序還要**子程序屍體

伺服器建立子執行緒去處理使用者業務

2.掌握套接字選項的獲取或設定,比如下面兩行,設定位址可重用

int on = 1;

setsockopt(sock_fd,sol_socket,so_reuseaddr,&on,sizeof(on));

3.掌握可重入函式的基本概念

可重入函式:執行時被訊號打斷,訊號處理函式執行完成,之後可以接著執行,可以保護現場恢復現場(相當於可中斷)

不可重入函式:

4. 廣播跟單播的不同:

廣播伺服器不停往固定的廣播位址和固定埠發訊息

資料鏈路層封裝的目的mac位址為全1

了解組播:

伺服器封裝資料報套接字位址結構,加入組播位址

客戶端需要加入組播組

struct sockaddr_in server_addr;

server_addr.sin_family = af_inet;

server_addr.sin_port = htons(10000);

server_addr.sin_addr.s_addr = htonl(inaddr_any);

練習1.  用執行緒實現併發伺服器

void * 類屬指標,傳給void *不需要強轉為void *型別

潛在bug:主線程,子執行緒不一定子執行緒先執行執行

主線程執行快了會覆蓋乙個connect_fd

2. 使用套接字選項,查詢套接字的接收緩衝區有多大?

3. 寫出廣播客戶端和伺服器**

網路程式設計四

5.listen函式 兩個作用 一.客戶端中呼叫listen函式,將未連線的套介面轉換為被動套介面,什麼是未連線套介面 呼叫connect函式外的套介面 實現tcp狀態轉換 close listen 二.指定核心為此套介面排隊的最大連線數 核心維護兩個佇列 未完成佇列,以完成佇列 未完成佇列是為完成...

Python的網路程式設計 四

urllib和urllib2 開啟遠端檔案的操作和本地差不多,不同的是只能使用讀模式,並且使用urllib模組的urlopen 的檔案類物件。注意 如果你當前沒有聯網,而你又想練習一下urllib的話,你可以用如下形式訪問本地檔案 localpage urlopen r file c test.tx...

(TCP IP網路程式設計)實驗四 程序程式設計

1 在理解程序的概念及其生命週期和狀態轉換過程的基礎上,進行程序相關程式設計 2 在理解程序間通訊的基本原理的基礎上,程式設計實現程序間通訊。1 在linux中利用fork 在父程序a中建立乙個子程序b,再在子程序a中建立乙個子程序c,在3個程序中都要編寫適當的語句模擬程序的工作。2 建立子程序時將...