1、概述
本節結合 "利用acl庫開發高併發半駐留式執行緒池程式" 和 "利用acl庫快速建立你的網路程式" 兩篇文章的內容,建立乙個簡單的執行緒池網路伺服器程式。
2、並髮式網路通訊例項
#include "lib_acl.h" /* 先包含acl庫標頭檔案 */
#include
#include
/*** 單獨的執行緒處理來自於客戶端的連線
* @param arg 新增任務時的物件
*/static void echo_client_thread(void *arg)
/* 關閉客戶端流 */
acl_vstream_close(client);
}/**
* 建立半駐留執行緒池的過程
* @return 新建立的執行緒池控制代碼
*/static acl_pthread_pool_t *create_thread_pool(void)
/*** 開始執行
*/static void run(const char *addr)
printf("%s: listen %s ok/r/n", myname, addr);
while (1)
printf("accept one/r/n");
/* 獲得乙個客戶端連線流 */
/* 開始處理該客戶端連線流 */
/*** 向執行緒池中新增乙個任務
* @param thr_pool 執行緒池控制代碼
* @param echo_client_thread 工作執行緒的**函式
* @param client 客戶端資料流
*/acl_pthread_pool_add(thr_pool, echo_client_thread, client);
}/* 銷毀執行緒池物件 */
acl_pthread_pool_destroy(thr_pool);
}/**
* 初始化過程
*/static void init(void)
/*** 使用提示介面
* @param procname 程式名
*/static void usage(const char *procname)
int main(int argc, char *argv)
init();
run(argv[1]);
return (0);
}
關於網路伺服器
假如我有數千萬甚至是上億的使用者資料,我想把使用者自增id和使用者名稱username放到快取裡。我的需求是,當要查詢使用者的資訊時,我想先從快取裡根據使用者名稱username獲取到使用者的id,然後再通過id在資料庫裡查詢使用者的資訊。我想當乙個使用者表達到上億的數量級別時,用自增id來查詢肯定...
網路伺服器宕機
1.伺服器程序終止 當伺服器程序終止時,伺服器傳送fin給客戶端,客戶端回以ack,客戶端進入close wait狀態,但還沒有結束連線。此時客戶端阻塞於fgets,客戶端繼續傳送buffer,伺服器傳送rst,客戶端readline返回0。而如果客戶端不理睬readline返回的rst,繼續wri...
linux網路伺服器
在本次中,學習了乙個簡單的基於tcp ip的伺服器 客戶端。在例子中,利用的是af inet域。在linux下,最常用就是af inet,af unix.af unix是linux檔案系統實現的本地要借字。後面的是可以用於包括英特網在內的tcp ip網路通訊的程式。下面來看乙個簡單的基於tcp ip...