精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

從零實現基于Linux socket聊天室-增加數據庫Sqlite功能-5

系統 Linux
本文一口君會在原有代碼基礎上增加數據庫操作功能,后續文章還會增加文件傳輸功能。本文需要增加數據庫功能,關于數據庫的基礎知識點,表的創建、增刪改查等操作。

[[435067]]

之前更新過從0實現聊天室的4篇文章,很多粉絲朋友還是覺得內容相對簡單,本文一口君會在原有代碼基礎上增加數據庫操作功能,后續文章還會增加文件傳輸功能。

本文需要增加數據庫功能,關于數據庫的基礎知識點,表的創建、增刪改查等操作,以及對應的庫函數的使用請參考以下3篇文章:

  • 《嵌入式數據庫sqlite3【基礎篇】-基本命令操作,小白一看就懂》
  • 《嵌入式數據庫sqlite3【進階篇】-子句和函數的使用,小白一文入門》
  • 《如何用C語言操作sqlite3,一文搞懂》

全部掌握后,開始進入本篇。

一. 調整目錄結構

為了方便編譯,現在我們將前面文章的代碼結構做如下調整。

  1. root@ubuntu:/mnt/hgfs/code/chat# tree . 
  2. ├── chat_client 
  3. │   ├── include 
  4. │   ├── Makefile 
  5. │   ├── obj 
  6. │   │   └── Makefile 
  7. │   └── src 
  8. │       ├── client.c 
  9. │       └── Makefile 
  10. ├── chat.h 
  11. ├── chat_server 
  12. │   ├── bin 
  13. │   │   └── server 
  14. │   ├── data 
  15. │   ├── include 
  16. │   ├── Makefile 
  17. │   ├── obj 
  18. │   │   └── server.o 
  19. │   └── src 
  20. │       ├── Makefile 
  21. │       └── server.c 
  22. └── gcc.sh 
  23.  
  24. 10 directories, 15 files 

最終增加了數據的文件目錄如下:

  1. peng@ubuntu:/mnt/hgfs/code/chat-sqlite$ tree . 
  2. ├── chat_client 
  3. │   ├── include 
  4. │   ├── Makefile 
  5. │   ├── obj 
  6. │   │   └── Makefile 
  7. │   └── src 
  8. │       ├── client.c 
  9. │       └── Makefile 
  10. ├── chat.h 
  11. ├── chat_server 
  12. │   ├── data 
  13. │   ├── include 
  14. │   │   └── data.h 
  15. │   ├── Makefile 
  16. │   ├── obj 
  17. │   │   └── Makefile 
  18. │   └── src 
  19. │       ├── data.c 
  20. │       ├── Makefile 
  21. │       └── server.c 
  22. ├── clean.sh 
  23. ├── gcc.sh 
  24. ├── user.db 
  25. └── 解壓密碼.txt 
  26.  
  27. 9 directories, 17 files 

clean.sh 用于清除臨時文件gcc.sh 用于編譯整個工程

服務端代碼放置到chat_server目錄下;客戶端代碼放置到chat_client目錄下;

數據庫相關代碼放在chat_server/data下。

chat.h是所有客戶端和服務器都會用到的頭文件,所以放置在根目錄下。

后續增加功能后,新增的頭文件和C文件分別添加到對應工程目錄的include和src目錄下即可。

二、 設計數據庫表

我們之前維護的所有客戶端的信息是用一個全局數組,并且沒有保存功能,現在我們要把所有客戶端的信息全部保存到數據庫中。

數據庫存儲的目錄

  1. chat_server/data 

數據庫名:

  1. user.db 

存儲用戶信息的表名:

  1. user 

表user格式如下:

三、 主要功能操作的語句及函數

數據庫操作最重要的就是語句,下面講解針對不同的功能對應的實現語句

1.創建表user

  1. CREATE TABLE IF NOT EXISTS user(name TEXT PRIMARY KEY  NOT NULL,passwd TEXT NOT NULL,fd INT NOT NULL,regist INT  NOT NULL); 

2.增加一個用戶

客戶端發送注冊請求后,服務器端注冊用戶信息到數據庫中

數據庫操作語句如下:

  1. insert into user values('一口Linux''123456',-1, 1) 

功能函數如下:

  1. int db_add_user(char name[],char passwd[]) 
  1. 功能: 
  2. 增加一個用戶,執行該函數前需要先判斷該用戶名是否存在 
  3.  
  4. 參數: 
  5. name:用戶名 
  6. passwd:密碼 
  7.  
  8. 返回值: 
  9. -1:失敗 
  10. 1:成功 

3.判斷用戶是否在線

客戶端發送登陸命令后,服務器通過該函數判斷該用戶是否已經登陸成功

數據庫操作語句如下:

  1. select fd from user where name='一口Linux' 

功能函數如下:

  1. int db_user_if_online(char *name,char *passwd) 
  1. 功能: 
  2. 判斷用戶是否在線,該函數主要根據fd的值來判斷用戶是否在線 
  3.  
  4. 參數: 
  5. name:用戶名 
  6. passwd:密碼   
  7.  
  8. 返回值: 
  9. 1:在線 
  10. -1:不在線 
  11. -2:用戶不存在 

4.判斷某個用戶名是否注冊

用戶發送注冊命令,服務器需要判斷該用戶名是否已經被注冊過

數據庫操作語句如下:

  1. select regist from user where name='一口Linux' 

功能函數如下:

  1. int db_user_if_reg(char *name
  1. 功能: 
  2. 判斷某個用戶名是否注冊過 
  3.  
  4. 參數: 
  5. name:用戶名 
  6.  
  7. 返回值: 
  8.  1:注冊過 
  9. -1:沒有注冊過 

5.判斷用戶名密碼是否正確

用戶發送登陸命令,需要判斷用戶名密碼是否正確

數據庫操作語句如下:

  1. select * from user where name='一口Linux' and passwd='123456' 

功能函數如下:

  1. int db_user_pwd_corrct(char *name,char* passwd) 
  1. 功能: 
  2. 判斷客戶端發送的用戶名密碼是否正確 
  3.  
  4. 參數: 
  5. name:用戶名 
  6. passwd:密碼 
  7.  
  8. 返回值: 
  9.  1:正確 
  10. -1:用戶名或者密碼不正確 

6.用戶上線、下線

用戶登陸成功后,或者發送下線申請,或者異常掉線,需要更新數據庫的狀態。

數據庫操作語句如下:

  1. UPDATE  user set fd=-1 where name='一口Linux' 

fd的值是套接字描述符,下線設置為-1,上線設置為對應的>0的值

功能函數如下:

  1. int db_user_on_off(int fd,char *name,unsigned int on_off)  
  1. 功能: 
  2. 更新數據庫中用戶的fd字段 
  3.  
  4. 參數: 
  5. fd:套接字描述符 
  6. name:用戶名 
  7. on_off:上線還是下線 
  8.  
  9. 返回值: 
  10.  1:正確 
  11. -1:失敗 

7. 顯示在線用戶

用戶發送顯示在線用戶命令后,服務器從數據庫當中查找所有在線用戶,并將姓名循環發送給客戶端

  1. int db_list_online_user(int fd) 

四、運行結果編譯

  1. ./gcc.sh 

1.服務器啟動

  1. ./server 9999 

端口號設定為9999

2. 客戶端注冊

客戶端啟動

  1. ./client 127.0.0.1 9999 

選擇1 注冊,輸入用戶名密碼即可。

3. 用戶登錄

輸入選項2,輸入剛才注冊的用戶名密碼,如果不一致會提示錯誤

登錄成功:

4. 注冊登錄其他幾個用戶

注冊并登錄新的用戶111、222、333

 

5. 公聊

選擇選項3,即進入公聊, 用戶yikou向所有用戶說:hello!

可見所有用戶均收到信息。

6. 私聊

用戶yikou向用戶111發送信息:

由下圖可知,只有用戶111收到該信息,其他用戶均沒有收到信息。

7. 顯示在線用戶

8. 查看最終數據庫信息

五、代碼說明

為方便讀者學習增加數據庫和去掉數據之間的差別,

用git維護版本。

切換到沒有數據庫的版本,執行下面命令即可。

  1. git reset --hard  597330ae0a183c9db8f68b7c9f60df94f8965778 

要切回有數據庫的版本執行下面的命令:

  1. git reset --hard 10bfbfaf2d09ae895313273c960ecfd84663f9fd 

使用數據庫后,數據的存儲管理更加方便,數據類型更易于擴充, 邏輯關系也更加清晰。

 本文轉載自微信公眾號「一口Linux」

 

責任編輯:姜華 來源: 一口Linux
相關推薦

2009-09-04 17:53:23

C#增加數據庫數據

2009-04-21 08:53:18

iphone新特性移動OS

2011-12-15 11:11:51

JavaNIO

2023-02-10 08:16:48

WebSocket簡易聊天室

2015-07-06 10:42:18

PHP聊天室應用

2020-06-08 14:36:50

數據中心端口密度網絡

2022-07-26 14:53:10

WebSocket網絡通信協議

2023-01-13 00:02:41

2023-01-05 09:17:58

2014-02-18 13:40:23

Office 365數字簽名

2025-05-09 08:35:00

聊天室FastAPIWebSocket

2015-08-12 13:44:13

數據中心

2011-06-09 15:44:29

Spring

2014-11-14 15:21:54

CommVault

2021-11-16 09:38:10

鴻蒙HarmonyOS應用

2021-08-04 05:49:40

數據庫數時序數據庫技術

2019-12-09 10:03:40

MySQLSQL數據庫

2022-11-14 08:01:48

2022-12-01 08:25:23

eTsTCP聊天室

2022-04-05 13:46:21

日志數據庫系統
點贊
收藏

51CTO技術棧公眾號

免费看a级黄色片| 97色在线视频| 中文字幕久久av| 国产又色又爽又黄刺激在线视频| 91性感美女视频| 国产在线精品一区免费香蕉| 国产精品theporn动漫| 禁断一区二区三区在线| 91精品国产一区二区三区蜜臀| 日韩国产一级片| 91精品国产综合久久久久久豆腐| 国产999精品久久久久久绿帽| 国产精品av免费在线观看| 免费在线一区二区三区| 日韩av自拍| 日韩www在线| 欧美国产日韩在线视频| 国产综合色区在线观看| 一区二区三区高清| 亚洲精品一区二区三区四区五区| 嫩草影院一区二区| 国产乱子伦视频一区二区三区| 人九九综合九九宗合| 精品少妇爆乳无码av无码专区| 欧洲美女日日| 亚洲精品日韩久久久| 韩国三级在线播放| 日本精品久久| 在线观看欧美黄色| 人妻精品无码一区二区三区| 青青在线视频| 中文字幕亚洲不卡| 亚洲国产一区二区三区在线| 欧美婷婷久久五月精品三区| 国产99久久久国产精品免费看 | 极品少妇一区二区| 日韩av电影手机在线观看| 久久精品国产亚洲AV无码麻豆| 97视频热人人精品免费| 最近的2019中文字幕免费一页| 在哪里可以看毛片| 免费精品国产的网站免费观看| 亚洲成人性视频| 日本精品一二三区| 伊人www22综合色| 欧美一区二区三区免费观看视频| 色婷婷.com| 日韩久久一区| 4438x成人网最大色成网站| 少妇一级淫免费放| 日韩三级成人| 制服丝袜亚洲色图| 超碰91在线播放| 亚洲一区二区三区日本久久九| 日韩亚洲欧美在线观看| 尤物网站在线看| 久久国产精品美女| 欧美刺激午夜性久久久久久久| 中文字幕av一区二区三区人妻少妇| 96sao精品免费视频观看| 欧美精品日韩精品| 色偷偷中文字幕| 91精品尤物| 日韩高清av在线| 欧美亚一区二区三区| 视频国产一区| 精品国产美女在线| 亚洲国产精品久| 亚洲黄色一区| 国产v综合v亚洲欧美久久| 国产午夜无码视频在线观看| 青青草97国产精品免费观看| 成人在线一区二区| www.激情五月| 91亚洲永久精品| 日韩理论片在线观看| 日本三级在线视频| 亚洲国产一二三| aa免费在线观看| 另类中文字幕国产精品| 91精品国产综合久久福利| 国产一级黄色录像| 精品国产1区| 久久人体大胆视频| 精国产品一区二区三区a片| 99热免费精品| 国产精品欧美日韩| www.综合色| 久久亚洲一区二区三区明星换脸| 亚洲欧美日本国产有色| 羞羞视频在线观看免费| 日韩欧美中文字幕在线播放| 国产又大又黄又猛| 97久久综合精品久久久综合| 精品视频在线播放免| 国产在线免费看| 亚洲黄色影院| 国产在线拍揄自揄视频不卡99| 欧美一区二区公司| 国产精品麻豆网站| 成人黄色av片| 91九色成人| 亚洲片在线资源| 男女做暖暖视频| 久久综合影音| 国产chinese精品一区二区| 成人免费黄色网页| 亚洲成人黄色影院| 亚洲图色中文字幕| 九一成人免费视频| 欧美精品精品精品精品免费| 中文字幕在线2018| 26uuu亚洲综合色| 日韩欧美一级在线| 久久亚洲精品人成综合网| 日韩成人久久久| 曰本女人与公拘交酡| 日韩不卡手机在线v区| 好吊色欧美一区二区三区| 超碰免费公开在线| 欧美探花视频资源| 人妻大战黑人白浆狂泄| 精品91在线| 亚洲综合精品一区二区| av在线天堂| 一本在线高清不卡dvd| av免费观看不卡| 亚洲精品小说| 91精品久久久久久久| av在线免费一区| 在线观看国产一区二区| 能免费看av的网站| 亚洲欧美成人| 精品蜜桃传媒| 精精国产xxxx视频在线野外 | 特级西西444www| 成人免费看片39| 国产精品久久久久99| 精品999视频| 色系网站成人免费| 久久精品国产亚洲av麻豆| 国产日韩亚洲| 久久久久久久久久久久久9999| 2021中文字幕在线| 亚洲精品在线网站| 日本a在线观看| 成人午夜免费av| 亚洲 自拍 另类小说综合图区| 日韩中文在线| 国a精品视频大全| 色窝窝无码一区二区三区| 亚洲一区二区三区四区在线免费观看 | 亚洲综合第一| 欧美美女被草| 久久视频这里只有精品| 国产极品久久久| 亚洲一区中文在线| 精品国产一区在线| 久久精品五月| 一区二区精品在线观看| 欧洲亚洲精品| 欧美精品在线极品| 刘玥91精选国产在线观看| 亚洲成人777| 国产吞精囗交久久久| 久久久久网站| 亚洲一区二区三区午夜| 日韩中文一区二区| 91国在线精品国内播放| 黄网在线观看| 欧美日韩国产精选| 国产亚洲精品久久久久久打不开| 不卡av在线免费观看| 国产最新免费视频| 久久国产精品亚洲人一区二区三区| 成人在线精品视频| gogo高清在线播放免费| 亚洲欧美日韩国产中文| 91成人在线免费| 亚洲午夜免费电影| 亚洲永久精品ww.7491进入| 另类小说欧美激情| 成人av在线播放观看| 视频福利一区| 成人网在线免费观看| 黑人精品视频| 亚洲色图在线观看| www.狠狠干| 在线观看日韩精品| 久久这里只有精品国产| 国产三级一区二区三区| 亚洲 自拍 另类 欧美 丝袜| 国产精品久久久免费| 久久精品国产精品亚洲精品色| 老司机精品在线| 国产日产久久高清欧美一区| 丁香花在线影院| 日韩在线观看免费全集电视剧网站 | 久久美女性网| www成人免费| 国产精品探花在线观看| 99re视频在线| 深夜视频一区二区| 97香蕉久久夜色精品国产| 在线国产91| 亚洲欧美日韩国产精品| 乱色精品无码一区二区国产盗| 欧美视频在线观看一区二区| 国产乡下妇女做爰| 中文字幕一区在线观看| 久久精品国产亚洲av麻豆| 国产精品一区二区久久精品爱涩| 动漫av免费观看| 国产日韩欧美高清免费| 黄色一级片黄色| 欧美激情另类| 色播亚洲婷婷| 亚洲欧美成人vr| 国产亚洲精品美女久久久m| 亚洲精品无播放器在线播放| 日韩av色在线| 蜜桃视频www网站在线观看| 久久国产精品电影| 午夜看片在线免费| 亚洲无av在线中文字幕| 天天色综合久久| 欧美成人精品福利| www.xxx国产| 正在播放亚洲一区| 一级黄色短视频| 在线观看日产精品| 久草视频在线免费| 色婷婷亚洲综合| www五月天com| 欧美性猛xxx| 丁香六月婷婷综合| 偷窥国产亚洲免费视频| 久久精品性爱视频| 亚洲国产日韩在线一区模特| 精品97人妻无码中文永久在线| 亚洲免费在线观看视频| 成年人在线免费看片| 国产丝袜在线精品| 亚洲一级黄色录像| 中文无字幕一区二区三区| 性欧美精品中出| 国产精品污www在线观看| 一级特黄曰皮片视频| 国产亚洲短视频| 91视频免费看片| 中文字幕在线视频一区| 内射一区二区三区| 一区二区三区自拍| 久久亚洲精品大全| 精品久久久视频| 日本a级c片免费看三区| 欧美性受xxxx| 国产理论片在线观看| 日韩亚洲欧美在线| 香蕉久久一区二区三区| 亚洲精品网址在线观看| 国产精品久久久久久久龚玥菲| 最近2019中文字幕一页二页| 国产淫片在线观看| 欧美劲爆第一页| 涩涩视频在线| 国产精品日韩专区| 精品一区二区三区亚洲| 国产精品一区在线播放| 天天躁日日躁狠狠躁欧美| 台湾成人av| 欧美日韩国产精品一区二区亚洲| 每日在线观看av| 久久只有精品| 香蕉视频xxxx| 91丨porny丨首页| 刘亦菲国产毛片bd| 亚洲午夜av在线| 天干夜夜爽爽日日日日| 91精品国产一区二区人妖| 天天舔天天干天天操| 中文一区二区视频| 毛片在线导航| 国产va免费精品高清在线| 电影91久久久| 久久久神马电影| 五月天久久网站| 天堂…中文在线最新版在线| 日本特黄久久久高潮| 国产成人av片| 日本一二三不卡| 国产福利久久久| 欧美日韩在线精品一区二区三区激情| www.久久精品.com| 一区二区三区四区精品| 黑人极品ⅴideos精品欧美棵| 国产精品久久久久久久9999| 亚洲综合影院| 亚洲色图自拍| 亚洲三级毛片| 三区视频在线观看| 国产色一区二区| 国产一级一片免费播放放a| 欧美视频在线不卡| 婷婷五月综合久久中文字幕| 精品国产一区二区三区久久狼5月| 亚洲十八**毛片| 7777奇米亚洲综合久久| 日韩av在线播放网址| 777久久久精品一区二区三区| 精品一区二区三区免费观看| 丰满少妇高潮一区二区| 午夜av区久久| 性一交一乱一透一a级| 中文字幕成人在线| 亚洲精华液一区二区三区| 99re在线视频观看| 久久精品亚洲欧美日韩精品中文字幕| 黄色片久久久久| av在线不卡网| 久久久久免费看| 欧美一区二区视频网站| 自拍视频在线播放| 日韩免费av片在线观看| 婷婷成人影院| 欧美成人高潮一二区在线看| 国产精品538一区二区在线| 波多野结衣喷潮| 欧美日韩一区二区三区视频| 男男激情在线| 国产成人在线一区二区| 亚洲三级网页| 久久精品一区二| 91丨九色porny丨蝌蚪| 六月丁香在线视频| 日韩毛片在线观看| 亚洲黄色免费看| 精品综合在线| 国产精品丝袜xxxxxxx| 欧美大片免费播放器| 午夜久久久影院| 天天操天天操天天干| 久久久之久亚州精品露出| 超碰地址久久| av无码久久久久久不卡网站| 不卡一区二区中文字幕| 日本三级午夜理伦三级三| 亚洲激情电影中文字幕| 精精国产xxxx视频在线播放| 蜜桃av噜噜一区二区三区| 久久国产66| 久久久久亚洲AV成人无在| 欧美三级乱人伦电影| 成年视频在线观看| 成人欧美一区二区三区黑人免费| 欧美久久一区| 精品国产人妻一区二区三区| 精品久久在线播放| 国产三级视频在线| 国产精品稀缺呦系列在线| 婷婷久久国产对白刺激五月99| 91精产国品一二三产区别沈先生| 亚洲美女偷拍久久| 蜜桃av噜噜一区二区三区麻豆| 97精品免费视频| 国产伦精品一区二区三区视频 | 亚洲第一二区| 激情五月宗合网| 国产亚洲va综合人人澡精品| 亚洲香蕉在线视频| 欧美精品手机在线| 西瓜成人精品人成网站| 日本熟妇人妻中出| 亚洲欧美激情插 | 日韩视频免费看| 视频一区日韩| 欧美日韩亚洲第一| 亚洲欧美另类小说| 三级在线播放| 91精品视频播放| 亚洲女优在线| 搜索黄色一级片| 亚洲男人av电影| 国内不卡的一区二区三区中文字幕| 少妇大叫太大太粗太爽了a片小说| 久久综合九色综合欧美98| 91tv国产成人福利| 1769国产精品| 国产国产精品| 欧美做受喷浆在线观看| 欧美美女一区二区三区| 国产ktv在线视频| 视频一区二区视频| 91美女在线观看| 国产精品久久久久久久成人午夜| 777777777亚洲妇女| 91精品国产乱码久久久久久久 | 久久99视频| 国产清纯白嫩初高中在线观看性色| 在线观看91精品国产入口|