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

正文內(nèi)容

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

2024-11-26 03:28 本頁面
 

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