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

正文內(nèi)容

基于socket的聊天系統(tǒng)設(shè)計(jì)-文庫吧

2024-10-21 03:28 本頁面


【正文】 文件 * user_table_mutex 本文件 *************************************************************/ int login(char * user_ID, char * password, int client_socket) { pthread_mutex_lock(amp。user_table_mutex)。 int i=0。 for(i=0。iUSER_AMOUNT_MAX。i++) { if( (strcmp(user_table[i].user_ID,user_ID)==0) amp。amp。(strcmp(user_table[i].password,password)==0) ) { user_table[i].client_socket = client_socket。 pthread_mutex_unlock(amp。user_table_mutex)。 return SUCCEED。 } } pthread_mutex_unlock(amp。user_table_mutex)。 return FAIL。 } 《網(wǎng)絡(luò)編程》課程設(shè)計(jì) 6 /************************************************************ *函數(shù)名稱 : get_active_user_list *正常返回值 : SUCCEED *參數(shù)說明 : 在函數(shù)返回數(shù)據(jù)放置在字符數(shù)組 user_list_buffer 中 , * 在 user_list_buffer中 ,每個用戶名稱占據(jù) USER_ID_SIZE + 1大小 . * 要求 user_list_buffer 中的數(shù)據(jù)必須初始化為全 39。\039。 *依賴自定 義數(shù)據(jù)結(jié)構(gòu) : struct user 本文件 *依賴全局變量 : user_table 本文件 * user_table_mutex 本文件 *************************************************************/ int get_active_user_list(char * user_list_buffer) { pthread_mutex_lock(amp。user_table_mutex)。 int i=0。 for(i=0。iUSER_AMOUNT_MAX。i++) { if(user_table[i].client_socket NOT_LOGIN) { memcpy(user_list_buffer, user_table[i].user_ID, USER_ID_SIZE)。 user_list_buffer += USER_ID_SIZE + 1。 } } pthread_mutex_unlock(amp。user_table_mutex)。 return SUCCEED。 } /************************************************************ *函數(shù)名稱 : user_register *正常返回值 : 注冊成功 SUCCEED,注冊失敗 FAIL *函數(shù)執(zhí)行失敗 : 注冊重復(fù)的 user_ID,注冊失敗 . * 如果 user_table 中沒有處于空閑的記錄 ,注冊失敗 . *參數(shù)說明 : client_socket 是服務(wù)器同用戶正在進(jìn)行通信的 socket *依賴自定義數(shù)據(jù)結(jié)構(gòu) : struct user 本文件 *依賴全局變量 : user_table 本文件 * user_table_mutex 本文件 *************************************************************/ 《網(wǎng)絡(luò)編程》課程設(shè)計(jì) 7 int user_register(char * user_ID, char * password, int client_socket) { pthread_mutex_lock(amp。user_table_mutex)。 int i=0。 for(i=0。iUSER_AMOUNT_MAX。i++) { if(strcmp(user_table[i].user_ID,user_ID)==0) { pthread_mutex_unlock(amp。user_table_mutex)。 return FAIL。 } } for(i=0。iUSER_AMOUNT_MAX。i++) { if(NOT_IN_USE == user_table[i].client_socket) { user_table[i].client_socket = NOT_LOGIN。 memcpy(user_table[i].user_ID,user_ID,USER_ID_SIZE)。 memcpy(user_table[i].password,password,PASSWORD_SIZE)。 pthread_mutex_unlock(amp。user_table_mutex)。 return SUCCEED。 } } pthread_mutex_unlock(amp。user_table_mutex)。 return FAIL。 } /************************************************************ *函數(shù)名稱 : look_up_socket *正常返回值 : 服務(wù)器與目的用戶通信的 socket, *函數(shù)執(zhí)行失敗 : 沒有找到服務(wù)器與目的用戶通信的 socket,返回值為 FAIL *參數(shù)說明 : receiver 是目的用戶的 ID *依賴自定義數(shù)據(jù)結(jié)構(gòu) : struct user 本文件 *依賴全局變量 : user_table 本文件 * user_table_mutex 本文件 *************************************************************/ int look_up_socket(char * receiver) { 《網(wǎng)絡(luò)編程》課程設(shè)計(jì) 8 pthread_mutex_lock(amp。user_table_mutex)。 int socket=0。 int i=0。 for(i=0。iUSER_AMOUNT_MAX。i++) { if(strcmp(user_table[i].user_ID,receiver)==0) { if(user_table[i].client_socket=0) { socket = user_table[i].client_socket。 pthread_mutex_unlock(amp。user_table_mutex)。 return socket。 } } } pthread_mutex_unlock(amp。user_table_mutex)。 return FAIL。 } /************************************************************ *函數(shù)名稱 : deactive_user *功能說明 : 用于用戶登出服務(wù)器時 ,把服務(wù)器與用戶通信的 socket 設(shè)置為NOT_LOGIN *正常返回值 : SUCCEED *函數(shù)執(zhí)行失敗 : 沒有找到服務(wù)器與用戶通信的 socket,返回值為 FAIL *參數(shù)說明 : client_socket 是服務(wù)器與用戶通信的 socket *依賴自定義數(shù)據(jù)結(jié)構(gòu) : struct user 本文件 *依賴全局變量 : user_table 本文件 * user_table_mutex 本文件 *************************************************************/ int deactive_user(int client_socket) { pthread_mutex_lock(amp。user_table_mutex)。 int i=0。 for(i=0。iUSER_AMOUNT_MAX。i++) { if(user_table[i].client_socket == client_socket) { 《網(wǎng)絡(luò)編程》課程設(shè)計(jì) 9 user_table[i].client_socket=NOT_LOGIN。 pthread_mutex_unlock(amp。user_table_mutex)。 return SUCCEED。 } } pthread_mutex_unlock(amp。user_table_mutex)。 return FAIL。 } /************************************************************ *函數(shù)名稱 : user_change_register *正常返回值 : 注冊成功 SUCCEED,注冊失敗 FAIL *函數(shù)執(zhí)行失敗 : 注冊重復(fù)的 user_ID,注冊失敗 . *函數(shù)功能的其他說明 : 不改變當(dāng)前用戶的登錄狀態(tài) *參數(shù)說明 : client_socket 是服務(wù)器同用戶正在進(jìn)行通信的 socket *依賴自定義數(shù)據(jù)結(jié)構(gòu) : struct user 本文件 *依賴全局變量 : user_table 本文件 * user_table_mutex 本文件 *************************************************************/ int user_change_register(char * user_ID, char * password, int client_socket) { pthread_mutex_lock(amp。user_table_mutex)。 int i=0。 for(i=0。iUSER_AMOUNT_MAX。i++) { if(strcmp(user_table[i].user_ID,user_ID)==0) { pthread_mutex_unlock(amp。user_table_mutex)。 return FAIL。 } } for(i=0。iUSER_AMOUNT_MAX。i++) { if(client_socket == user_table[i].client_socket) { memcpy(user_table[i].user_ID,user_ID,USER_ID_SIZE)。 memcpy(user_table[i].password,password,PASSWORD_SIZE)。 pthread_mutex_unlock(amp。user_table_mutex)。 《網(wǎng)絡(luò)編程》課程
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1