c++服務器開源項目Tinywebserver運行

c++服務器開源項目Tinywebserver運行

  • 一、Tinywebserver介紹
  • 二、環境搭建
  • 三、構建數據庫
  • 四、編譯Tinywebserver
  • 五、查看效果

Tinywebserver是github上一個十分優秀的開源項目,幫助初學者學習如何搭建一個服務器。
本文講述如何在使用mysql跟該項目進行連接并將項目運行起來。

一、Tinywebserver介紹

Linux下C++輕量級Web服務器,助力初學者快速實踐網絡編程,搭建屬于自己的服務器.

  • 使用 線程池 + 非阻塞socket + epoll(ET和LT均實現) + 事件處理(Reactor和Proactor均實現) 的并發模型
  • 使用狀態機解析HTTP請求報文,支持解析GET和POST請求
  • 訪問服務器數據庫實現web端用戶注冊、登錄功能,可以請求服務器圖片和視頻文件
  • 實現同步/異步日志系統,記錄服務器運行狀態
  • 經Webbench壓力測試可以實現上萬的并發連接數據交換

在這里插入圖片描述

二、環境搭建

系統環境 : ubuntu 22.04 + mysql5.7.29
mysql安裝教程詳見Ubuntu22部署MySQL5.7詳細教程

三、構建數據庫

1、進入mysql

mysql -u root -p

2、建立你的數據庫
根據readme寫sql語句:創建 yourdb數據庫,創建user表。

	create database yourdb;USE yourdb;CREATE TABLE user(username char(50) NULL,passwd char(50) NULL)ENGINE=InnoDB;INSERT INTO user(username, passwd) VALUES('name', 'passwd');

四、編譯Tinywebserver

1、修改配置
需要確認main.cpp里的數據庫和你mysql數據庫配置相同,如端口、ip等。
然后打開main.cpp修改對應配置。
在這里插入圖片描述
2、編譯運行Tinywebserver
在Tinywebserver項目文件中打開終端,運行命令編譯項目。

sh ./build.sh

啟動server

./server

五、查看效果

輸入ip:9006就可以進行登錄注冊操作了,可以使用ifconfig查看ip地址。
在這里插入圖片描述

參考資料:
c++ 經典服務器開源項目 Tinywebserver的使用與配置(百度智能云服務器安裝ubuntu18.04可用公網ip訪問)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696967.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696967.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696967.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python 層次分析(AHP)

文章目錄 一、算法原理二、案例分析2.1 構建指標層判斷矩陣2.2 求各指標權重2.2.1 算術平均法(和積法)2.2.2 幾何平均法(方根法) 2.3 一致性檢驗2.3.1 求解最大特征根值2.3.2 求解CI、RI、CR值2.3.3 一致性判斷 2.4 分別求解方案層…

利用Ubuntu22.04啟動U盤對電腦磁盤進行格式化

概要: 本篇演示利用Ubuntu22.04啟動U盤的Try Ubuntu模式對電腦磁盤進行格式化 一、說明 1、電腦 筆者的電腦品牌是acer(宏碁/宏基) 開機按F2進入BIOS 開機按F12進入Boot Manager 2、Ubuntu22.04啟動U盤 制作方法參考筆者的文章: Ubuntu制作Ubun…

【OpenAI官方課程】第五課:ChatGPT文本轉換Transforming

歡迎來到ChatGPT 開發人員提示工程課程(ChatGPT Prompt Engineering for Developers)!本課程將教您如何通過OpenAI API有效地利用大型語言模型(LLM)來創建強大的應用程序。 本課程由OpenAI 的Isa Fulford和 DeepLearn…

緩存篇—緩存雪崩

什么是緩存雪崩 通常我們為了保證緩存中的數據與數據庫中的數據一致性,會給 Redis 里的數據設置過期時間,當緩存數據過期后,用戶訪問的數據如果不在緩存里,業務系統需要重新生成緩存,因此就會訪問數據庫,并…

QEMU源碼全解析 —— virtio(22)

接前一篇文章:QEMU源碼全解析 —— virtio(21) 前幾回講解了virtio驅動的加載。本回開始講解virtio驅動的初始化。 在講解virtio驅動的初始化之前,先要介紹virtio配置的函數集合變量virtio_pci_config_ops。實際上前文書也有提到…

c# HttpCookie操作,建立cookie工具類

HttpCookie 是一個在.NET Framework中用于管理和操作HTTP Cookie的類。它提供了一種方便的方式來創建、設置、讀取和刪除Cookie。 Cookie是一種在客戶端和服務器之間傳遞數據的機制,用于跟蹤用戶的會話狀態和存儲用戶相關的信息。它通常由服務器發送給客戶端&#…

萬字干貨-京東零售數據資產能力升級與實踐

開篇 京東自營和商家自運營模式,以及伴隨的多種運營視角、多種組合計算、多種銷售屬性等數據維度,相較于行業同等量級,數據處理的難度與復雜度都顯著增加。如何從海量的數據模型與數據指標中提升檢索數據的效率,降低數據存算的成…

parallels配置centos虛擬環境

parallels Desktop M1/M2芯片Parallels Desktop 19虛擬機安裝使用教程(超詳細)-CSDN博客 下鏡像記得找和mac芯片匹配的 安裝就選第一個centos7不要選第二個 安裝有問題就選回退重啟 parallel desktop 18/19安裝centos7.2009教程_parallels desktop 19…

echarts多y軸樣式重疊問題

1、主要屬性設置 yAxis: [{//y軸1nameTextStyle: {align: "right",padding: 0}},{//y軸2nameTextStyle: {align: "left",padding: 0}},{//y軸3axisLabel: {margin: 50},nameTextStyle: {align: "left",padding: [0, 0, 0, 50]},axisPointer: {l…

Python Web開發記錄 Day2:CSS

名人說:莫道桑榆晚,為霞尚滿天。——劉禹錫(劉夢得,詩豪) 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder😊) 目錄 二、CSS1、CSS-初始入門①快速了解②CSS應用方式…

【C語言】sizeof()函數

前言 sizeof函數用于獲取數據類型或變量在內存中所占的字節數。 sizeof函數返回的是編譯時確定的值,不會計算動態分配的內存大小。 sizeof函數可以用于多種類型的數據,包括數組、指針、結構體、枚舉等。 1.數組 int arr[5];printf("%zu ", siz…

文件上傳與下載

文件上傳與下載 1. 文件上傳 為了能上傳文件,必須將表單的 method 設置為 POST,并將 enctype 設置為 multipart/form-data 。 有兩種實現文件上傳的方式: 底層使用 Apache Commons FileUpload 包 底層使用 Servlet 3.1 內置的文件上傳功能…

如何計算文件哈希值(MD5值)

生成文件hash值的用途 哈希值,即HASH值,是通過對文件內容進行加密運算得到的一組二進制值,主要用途是用于文件校驗或簽名。正是因為這樣的特點,它常常用來判斷兩個文件是否相同。 比如,從網絡上下載某個文件&#xff0…

MySQL主從同步

MySQL主從同步(復制)是一種數據復制技術,用于將數據從一個MySQL數據庫(稱為“主”)復制到另一個或多個MySQL數據庫(稱為“從”)。這個過程通常用于負載均衡、數據備份、災難恢復和其他類似場景。…

C++ Primer Plus 筆記(持續更新)

編譯器的正解 數據+算法程序 賦值從右向左進行 cin,cout的本質也是對象 類和對象的解釋

centerOS docker搭建flowable,流程引擎

1、準備一個mysql數據庫,庫名為flowable 2、mysql驅動下載,下載地址為: https://mvnrepository.com/artifact/mysql/mysql-connector-java此處使用的是8.0.22版本的驅動,且數據庫必須使用版本8,否則第二次啟動報錯 3、…

OpenAI文生視頻大模型Sora概述

Sora,美國人工智能研究公司OpenAI發布的人工智能文生視頻大模型(但OpenAI并未單純將其視為視頻模型,而是作為“世界模擬器” ),于2024年2月15日(美國當地時間)正式對外發布。 Sora可以根據用戶…

samber/lo 庫的使用方法:type

samber/lo 庫的使用方法:type samber/lo 是一個 Go 語言庫,提供了一些常用的集合操作函數,如 Filter、Map 和 FilterMap。 這個庫函數太多,因此我決定按照功能分別介紹,本文介紹的是 samber/lo 庫中type相關的函數。匯…

Redis中的AOF重寫到底是怎么一回事

首先我們知道AOF和RDB都是Redis持久化的方法。RDB是Redis DB,一種二進制數據格式,這樣就是相當于全量保存數據快照了。AOF則是保存命令,然后恢復的時候重放命令。 AOF隨著時間推移,會越來越大,因為不斷往里追加命令。…

哪些行業適合做小程序?零售電商、餐飲娛樂、旅游酒店、教育生活、醫療保健、金融社交、體育健身、房產汽車、企管等,你的行業在其中么?

引言 在當今數字化時代,小程序成為了各行各業快速發展的數字工具之一。它的輕便、靈活的特性使得小程序在多個行業中找到了廣泛的應用。本文將探討哪些行業適合開發小程序,并介紹各行業中小程序的具體應用。 一、零售和電商 在當今數字化的商業環境中&…