Linux C 之搭建HTTP服務(二)

2021-10-23 22:04:00 字數 2001 閱讀 4550

搭建伺服器之處理目錄

上節,(linux c搭建http伺服器(一))搭建http中我們只處理了普通檔案,這節,我們嘗試處理一下資料夾。

要處理資料夾要明白資料夾以什麼形式回饋給客戶端。而且要清楚我要開啟的資料夾不一樣,應該反饋給客戶端不一樣的

我們接上節的處理。

生成html

當開啟資料夾時把資料夾中的所有檔案給用(html)傳送出來。所以如何寫html就成了問題。這裡建議使用唯一的id去定義這個html。因為我們要處理的並不是乙個客戶端,而是多個,如果僅有乙個html的話容易出現錯誤,一般的處理是使用時間戳去定義(當然這裡看自己的習慣)。

//定義html的名字

int ret =

sprintf

(filename,

"%ld_%d_index.html"

,time

(null

), fd)

;int filesize =

0;

html的基本語法,大家一定有了解。???(一切從簡)。

那我們就需要先把這些必要的給寫下來

//建立html

int srcfd =

open

(filename, o_rdwr|o_creat|o_trunc,

0666);

if(srcfd <0)

//開頭

char buf[

1024]=

"");

filesize +

=write

(srcfd, buf,

strlen

(buf)

);

傳送目錄

傳送目錄

send_header

(fd,

200,

"ok"

,get_mime_type

(filename)

, filesize)

;send_file

(filename, fd)

;

2.刪除html(用完就刪,工具人)

unlink

(filename)

;

**
int

product_file

(char

*path,

char

*filename,

int bufsize,

int fd)

//建立或開啟

int srcfd =

open

(filename, o_rdwr|o_creat|o_trunc,

0666);

if(srcfd <0)

//寫開頭

char buf[

1024]=

"");

filesize +

=write

(srcfd, buf,

strlen

(buf));

close

(srcfd)

;return filesize;

}int

send_dir

(char

*path,

int fd)

;int filesize =

product_file

(path, filename,

256, fd);if

(filesize <0)

//2. 傳送頭+檔案

send_header

(fd,

200,

"ok"

,get_mime_type

(filename)

, filesize)

;send_file

(filename, fd)

;unlink

(filename)

;return0;

}

http服務搭建

http伺服器搭建 主配置檔案在 etc httpd conf httpd.conf 安裝http yum install httpd y 啟動http伺服器 systemctl start httpd.service 檢視安裝狀態 systemctl status httpd.service 關閉...

http服務搭建

http伺服器搭建 主配置檔案在 etc httpd conf httpd.conf 安裝http yum install httpd y 啟動http伺服器 systemctl start httpd.service 檢視安裝狀態 systemctl status httpd.service 關閉...

HTTP服務搭建(三)

專案 使用apache進行web 搭建 一 基於ip 1.配置防火牆和selinux 2.給網絡卡配置ip 3.配置目錄檔案 4.編輯配置檔案 5.重啟服務測試 1.這裡對防火牆和selinux進行的是粗糙的操作,關閉。systemsctl stop firewalld setenfoece 0 2...