說在前面
暑假留校的主要任務是學習linux下的c語言程式設計,之前寫了my_ls, my_shell這兩個可以說是練手的小專案,而最後的專案聊天室也是花了自己快兩周的時間,說實話第一次寫這種(對自己而言)大專案,最深刻的體會就是整體的架構很重要,很重要,很重要…
專案概述
linux 環境下的簡易聊天室,採用c/s模型,實現多客戶端之間的穩定資料傳輸。
功能登陸註冊賬號,登陸時密碼不會顯
好友管理
a. 檢視好友列表(不同顏色代表不同的狀態)
b. 新增好友
c. 刪除好友
d. 遮蔽好友
群管理a. 檢視所**,檢視群中成員
b. 建立群
c. **
d. 退群
e. 解散群
f. 設定管理員
g. 踢人
聊天通訊
a. 私聊
b. 群聊
c. 檢視聊天記錄
離線傳輸
a. 離線訊息
b. 離線檔案
傳送檔案
容錯處理
對伺服器要求
a. 面對同時大量的客戶端傳送連線與資料時,伺服器能正常處理
b. 客戶端的意外退出,不會導致伺服器退出
c. 資料能夠正確接收和傳送
相關技術
socket程式設計(基礎)
mysql資料庫
i/o多路復用(epoll)
執行緒池
功能截圖
思路服務端:
1. 建立套接字,繫結資料庫,建立epoll控制代碼,通過while迴圈檢測是否有請求到來,有請求到來時向執行緒池中新增任務
2. 建立3個鍊錶,分別是儲存使用者資訊,關係,以及聊天記錄
3. ctrl + c 退出,銷毀執行緒池,銷毀鍊錶,關閉套接字,關閉epoll描述符,釋放資源
客戶端:建立套接字,登陸成功後開啟接收執行緒
注:客戶端收發資料一定要分開寫
完整**
chatroom
Linux網路程式設計小型聊天室
前段時間學習了網路程式設計,雖然沒有完全熟練掌握,自己嘗試做乙個小型的聊天室 如下 客戶端 chatclient.c include include include include include include include include include int sockfd char ip ...
網路程式設計 簡易聊天室
問題背景 多數程式猿使用scoket關鍵字有什麼用途。什麼是網路程式設計?通過使用套接字來達到程序間通訊目的的程式設計就是網路程式設計,網路程式設計最主要的工作就是在傳送端把資訊通過規定好的協議進行組裝包,在接收端按照規定好的協議把包進行解析,從而提取出對應的資訊,達到通訊的目的!中間最主要的就是資...
JSP網路聊天室
1.登入頁面 在頁面輸入使用者名稱密碼,提交到登入邏輯頁面 2.登入邏輯頁面 調資料庫判斷使用者名稱密碼的正確性 正確 跳到聊天室介面並且儲存使用者名稱 錯誤 返回登入介面 3 聊天室介面 1.拿到儲存的使用者名稱 2.將傳送的訊息傳到聊天室邏輯頁面 4.聊天室邏輯頁面 2 邏輯思路圖 3 例項 l...