在linux下用多執行緒來構建web伺服器

2021-07-12 00:25:38 字數 2345 閱讀 7783

//此為  這個部落格主人寫的

//我將裡邊的內容進行整理,然後轉換了一下,

#include

#include

#include

#include

#include

#include

#include

#define hostlen 256

#define portnum 12345

//#define debug

int make_server_socket_q(int,int);

void error(char *err)

//與下方函式進行組合處理,針對傳遞過來的鏈結請求,進行相對應的處理.

int make_server_socket(int port) //num for listen

//被轉換成為網路鏈結部分的函式.

int make_server_socket_q(int port,int backlog)

/* 允許接入*/

if(listen(sock_id,3))//建立未處理的請求佇列,給定佇列最大數為3;

error("listen failed");

return sock_id;

}/* 測試是否存在 */

int check_exist(char *filename)

/* 檢測檔案型別 */

char * file_type(char *filename)

/* 報文 頭部 */

void do_head(int sock_fd,char *type)

/* 404 檔案沒找到 */

void do_nofile(char *filename,int sock_fd)

/* 處理其它命令 */

void do_unkown(int sock_fd)

/* 核心處理 從檔案中讀取 然後寫入socket */

void do_show(char *arg,int sock_fd)

;char c;

if(!extension)

return ;

if(strcmp(extension,"html")==0)

content="text/html";

else if(strcmp(extension,"htm")==0)//這兩者是網頁的一種

else if(strcmp(extension,"png")==0)//這三者是型別資料

content="image/png";

else

content="text/plain"; //預設處理

sock_fp=fdopen(sock_fd,"w");

file_fp=fopen(arg,"rb");

if(file_fp!=null&&sock_fp!=null)

}/* request處理 */

int process_rq(char *request,int sock_fd)

// 執行緒主函式,應資料型別不知道,這會使資料在傳送過程中導致資料的丟失與無法訪問,所以現將資料的型別轉換完成後在對其進行相應的處理.此函式應該輸出的是傳遞資料的

//型別.

void thread_routine(void *fd)

int main(int argc,char *argv)

//其連線方式應該為,每進行一次資料請求時進行一次資料的鏈結,在此資料請求中有while中的兩個函式進行處理,一是提取請求中的佇列,二是判斷請求佇列中資料型別然後

//進行相應的資料處理,與鏈結.

port=argc==1?portnum:atoi(argv[1]); //注意這裡如果只有乙個引數,即是設定預設埠

if((sock_id=make_server_socket(port))==-1)//將鏈結部分合併成為乙個函式進行,相應資料的處理.

return -1;

printf("now listen to the port #%d/n",port);

fflush(stdout);

//此處是在針對鏈結成功後的的伺服器進行資料的傳送,應為傳送的資料可能為多種,若按照同一種處理方式會到時資料混亂,所有下邊給定每個傳送的資料進行整理判斷

//然後進行相應的操作.

while(1)

return 0;

}

在 DOS 下實現多執行緒

在 dos 下實現多執行緒 程式在 turbo c 3.0 下除錯通過,採用了最簡單的時間片輪轉法,實現了多執行緒的系統,程式盡量採用了最簡潔的技術來實現多工的系統,主要使用到了c標準庫中的setjmp和longjmp兩個函式,程式絕大部分都是採用c c 語言書寫,但是仍然不可避免的採用了三句內嵌彙...

自用 linux下多執行緒

3 簡單的多執行緒示例 乙個簡單的linux多執行緒示例如下 include include include include void thread function void arg char message hello world int main printf waiting for thre...

linux下多執行緒程式設計

先看執行的結果 1 主函式正在建立執行緒,2執行緒1被建立 3 thread1 i m thread 1th 4執行緒2被建立 5 thread2 i m thread 2nd 6 thread2 number 0 7執行緒3被建立 8主函式正在等待執行緒結束.9 thread1 number 0 ...