freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于socket的聊天系統(tǒng)設計(已修改)

2024-11-26 03:28 本頁面
 

【正文】 目 錄 引言 ........................................................................................................ 1 開發(fā)原理 ........................................................................................... 1 實現(xiàn)目標 ........................................................................................... 1 設計實現(xiàn) ........................................................................................... 2 頭文件 .......................................................................................... 2 服務器端 ....................................................................................... 3 客戶端 ........................................................................................ 14 程序測試 ......................................................................................... 22 設計總結 ......................................................................................... 24 成員分工 ......................................................................................... 25 參考文獻 ......................................................................................... 25 《網絡編程》課程設計 1 《網絡程序設計》課程設計 基于 socket 的聊天系統(tǒng)設計 摘要: 本設計通過研究討論,設計基于 socket 編程的網絡聊天系統(tǒng) ,服務器端采用多線程并發(fā)服務方式 ,多客戶端能同時連接服務器,并且客戶端之間能進行通信 。 程序通過了 驗證與測試,證明了系統(tǒng)的 可用性、易用性、完善性。 關鍵詞: socket、 server、 client、聊天系統(tǒng) 引言 socket 通常也稱 作 套接字 ,用于描述 IP 地址和端口,是一個通信鏈的句柄。應用程序通常通過 套接字 向網絡發(fā)出請求或者應答網絡請求。 一個聊天系統(tǒng)的通信模塊就是 Socket 程序的設計與實現(xiàn),聊天系統(tǒng)分為服務器端和客戶端,服務器端的任務就是接受客戶端的不同請求,做出不同的響應,并處理多客戶端之間的通信。 開發(fā)原理 服務器 : 使用 ServerSocket 監(jiān)聽指定的端口,端口可以隨意指定(由于 1024 以下的端口通常屬于保留端口,在一些操作系統(tǒng)中不可以隨意使用,所以使用大于 1024 的端口),等待客戶連接請求,客戶連接后,會話產生; 在完成會話后,關閉連接。 服務器端采用多線程 , 為每個連接的客戶建立一個服務線程 ,多客戶端同時連接服務器,客戶端之間能夠進行會話。 客戶端 : 使用 Socket 對網絡上某一個服務器的某一個端口發(fā)出連接請求,一旦連接成功,打開會話;會話完成后,關閉 Socket??蛻舳瞬恍枰付ù蜷_的端口,通常臨時的、動態(tài)的分配一個 1024 以上的端口。 實現(xiàn)目標 根據(jù)客戶機提出各種請求 ,服務器能夠根據(jù)不同請求 ,做出 不同的響應,能實現(xiàn)多客戶同時在線進行聊天的功能 。 程序具有簡單易用性。 《網絡編程》課程設計 2 設計實現(xiàn) 頭文件 /************************************************************ * * 基于 socket 的聊天客戶機和服務器的頭文件 *設計思路 : * 客戶機提出各種請求 ,服務器根據(jù)不同請求 ,發(fā)送不同的響應 . *關鍵問題 : * 客戶機和服務器之間協(xié)議制訂 *************************************************************/ include i/ // for sockaddr_in include sys/ // for socket include sys/ // for socket include // for printf include // for exit include // for bzero /************************************************************ *服務器端口定義 *************************************************************/ define CHAT_SERVER_PORT (6666) /************************************************************ *報文類型定義 *************************************************************/ define NO_COMMAND (100) //客戶端發(fā)送報文類型 define REGISTER (1) define LOGIN (2) define GET_USER_LIST (3) define TALK_TO (4) define EXIT (5) define CHANGE (6) define GET_MESSAGE (7) //服務器端發(fā)送報文類型 《網絡編程》課程設計 3 define SUCCEED (0) define FAIL (1) define TRANSFER (80) /************************************************************ *報文格式定義 *************************************************************/ define COMMAND_SIZE (sizeof(char)) define OPTION_SIZE (16) define ID_SIZE (OPTION_SIZE) define PASSWORD_SIZE (OPTION_SIZE) define MESSAGE_SIZE (1024) typedef struct chat_package { signed char type。 char from[ID_SIZE +1]。 char password[PASSWORD_SIZE +1]。 char option[OPTION_SIZE +1]。 char to[ID_SIZE + 1]。 char message[MESSAGE_SIZE +1]。 }chat_package。 define BUFFER_SIZE (sizeof(chat_package)) /************************************************************ *選項分類 : * 用戶列表 *************************************************************/ define USER_LIST USER_LIST 服務器端 /*************************************************************** 一個基于 socket 的 Linux上的網絡聊天程序 多線程的服務器程序 編譯方式 : gcc pthread o chat_server * 基于 socket 的聊天服務器端 *設計思路 : * 客戶機提出各種請求 ,服務器根據(jù)不同請求 ,發(fā)送不同的響應 。 * 服務器端采用多線程 ,為每個連接的客戶建立一個服務線程 。 《網絡編程》課程設計 4 *關鍵問題 : * 客戶機和服務器之間協(xié)議制訂 * 多線程訪問同一個用戶列表的互斥問題 *************************************************************/ include include sys/ include define LENGTH_OF_LISTEN_QUEUE (20) define USER_AMOUNT_MAX (50) define NOT_LOGIN (1) define NOT_IN_USE (NOT_LOGIN 1) define USER_ID_SIZE (ID_SIZE) typedef struct user{ char user_ID[USER_ID_SIZE]。 char password[PASSWORD_SIZE]。 int client_socket。 //client_socket==NOT_LOGIN,表示沒有用戶登錄 , //client_socket==NOT_IN_USE,表示沒有用戶注冊 , }user。 //多線程共享 user_table static user user_table[USER_AMOUNT_MAX]。 //訪問 user_table 時要使用的信號量 pthread_mutex_t user_table_mutex。 /************************************************************ *函數(shù)名稱 : init_user_table *函數(shù)執(zhí)行失敗 : 當一個報文不能容納全部用戶名稱列表時 ,給出錯誤提示信息 ,結束程序 *依賴自定義數(shù)據(jù)結構 : struct user 本文件 *依賴全局變量 : user_table 本文件 *************************************************************/ int init_user_table() { if(USER_ID_SIZE*USER_AMOUNT_MAXMESSAGE_SIZE) { 《網絡編程》課程設計 5 printf(USER_ID_SIZE*USER_AMOUNT_MAXMESSAGE_SIZE\n)。 exit(1)。 } int i=0。 for(i=0。iUSER_AMOUNT_MAX。i++) { user_table[i].client_socket = NOT_IN_USE。 bzero(user_table[i].user_ID,OPTION_SIZE)。 bzero(user_table[i].password,OPTION_SIZE)。 } } /************************************************************ *函數(shù)名稱 : login *正常返回值 : 登錄成功為 SUCCEED,登錄失敗為 FAIL *參數(shù)說明 : client_socket 是服務器同用戶正在進行通信的 socket *依賴自定義數(shù)據(jù)結構 : struct user 本文件 *依賴全局變量 : user_table 本
點擊復制文檔內容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1