Mongoose 利用實現HTTP服務

2021-09-07 14:38:33 字數 3077 閱讀 8507

注意:這裡是使用mongoose實現http服務,非資料庫使用。

最近由於需要使用http服務端,原先是使用的qt框架實現的http服務端,然後發現有些缺陷導致我不得不放棄這個框架,也不是完全放棄,只是http服務端這裡不再使用qt,用qt做高併發真的有點不好。

於是開始研究這個框架,根據mongoose 使用者手冊再加上一堆例項教程,基本上寫了乙個類 進行操作封裝(並不是完全的封裝了)

mohttp.**件

主要是實現mongoose框架的基本 變數獲取。注意裡面有過載,主要是為了方便使用。

mohttp.cpp實現各類方法。

str = var; //如果資料正確

str = var; //如果資料正確

str = var; //如果資料正確

使用方法:

mo.cpp(或main.cpp)

static void ev_handler(struct mg_connection *nc, int ev, void *p) else                                 //測試**

delete mo; //釋放變數

mg_serve_http(nc, hm, s_http_server_opts); //資料傳送

}看了幾個小時之後,差不多只能寫出這麼點東西了。然後我就一直在想。

但是你有沒有發現,如果瀏覽器要是傳送 ajax 資料過來,假定邏輯在 c++ **裡面,我應該如何設定返回的資料啊?

的確,這個類也沒有加入 返回的資料,這個問題我也一直在困擾。

難道mongoose 框架都沒有函式是可以設定資料在 body 的?百思不得其解的我於是去找了一下 mongoose 文件裡面的例子,發現了乙個cookie驗證的例子,原本我以為不管怎麼樣也會有設定資料的地方了,但是我驚奇的發現,是這樣的:

cookie_auth.c 例子檔案

static void set_session_cookie(struct mg_connection *nc,    

const struct session *s)

/* * if requested via get, serves the login page.

* if requested via post (form submission), checks password and logs user in.

*/static void login_handler(struct mg_connection *nc, int ev, void *p) else else

} else

nc->flags |= mg_f_send_and_close;

} (void) ev;

}

看完了之後我就跟納悶了,為什麼要直接輸出http頭?框架難道真的沒有提供類似的方法嗎?

然後嘗試了各類函式:

也無果,這些函式會 輸出到 http 響應頭之前。

所以,是不是這個框架真的沒有 什麼設定返回的body 的函式呢?

總之目前只學到這裡,也許有什麼地方確實沒有了解。暫且先記錄下來,等知道了之後再續寫。

ios 利用NSStream模擬請求http資料

利用socket來模擬傳送http請求有以下幾步 1.先建立連線 設定連線的站點和埠號 self requesturldata www.tf56.com portno 80 此處建立連線的時候,我們給網路的入口和出口分別建立了乙個runloop,在此迴圈監聽資料流事件的到來。inputstream ...

docker下安裝nginx並實現https訪問

一 啟動容器 docker run detach name wx nginx p 443 443 p 80 80 v home nginx data usr share nginx html rw v home nginx config nginx.conf etc nginx nginx.conf...

在Apache下部署SSL證書實現HTTPS

https是以安全為目標的http通道,簡單講是http的安全版。谷歌已經制定了一項長遠的計畫,它的最終目標是將所有通過http協議呈現的網頁標為 不安全 對於站長來說,部署ssl證書來遷移到https是乙個現實和重要的問題,那麼,對於apache系統來說,如何部署ssl證書實現https協議呢?下...