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 建立子程序時將...