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

正文內(nèi)容

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

2024-12-04 03:28 上一頁面

下一頁面
 

【正文】 cpy(from, , ID_SIZE)。 bzero((char*)amp。 int length = recv(client_socket,(char*)amp。 if(from) memcpy(from, , ID_SIZE)。 《網(wǎng)絡(luò)編程》課程設(shè)計(jì) 19 char * user_id = user_list_buffer。 printf(\n)。 // 一個(gè)很大的緩沖區(qū) , 實(shí)際ID_SIZE 內(nèi)有效 bzero(receiver_user_ID,BUFFER_SIZE)。 printf(%d:LOGIN\n,LOGIN)。 printf(%d:GET_MESSAGE\n,GET_MESSAGE)。 switch(mand_option) { case REGISTER: printf(Input Your User_ID:)。 send_request_to_server(mand_option, 0, 0, 0)。 printf(Input Your Password:)。 case GET_USER_LIST: send_request_to_server(mand_option, USER_LIST, 0, 0)。 printf(Write Your Message Here:)。 case EXIT: send_request_to_server(mand_option, 0, 0, 0)。 scanf(%s,user_ID)。 case GET_MESSAGE: break。 bzero(option,ID_SIZE+1)。 if(GET_MESSAGE==mand_option) response=receive_result_from_server_noblock(option, message_from, message)。 case SUCCEED: if(strcmp(option, USER_LIST)==0) print_user_list(message)。 break。 bzero(password,BUFFER_SIZE)。 圖 13 查詢?cè)诰€人數(shù) 圖 13 查詢?cè)诰€人數(shù) (左側(cè) server 端,右側(cè) client 端) 初次運(yùn)行 系統(tǒng)顯示無人在線。 設(shè)計(jì)總結(jié) 通過本次課程設(shè)計(jì),我們加深了對(duì) Linux下用 C 語言進(jìn)行 socket編程的認(rèn)識(shí)和了解,并且更好的掌握了對(duì) socket 原理以及結(jié)構(gòu)的認(rèn)識(shí)。在 WINDOWS 系統(tǒng)中, SOCKET 稱為 WINSOCK。 在客戶方呼叫連接請(qǐng)求之前,它必須知道服務(wù)方在哪里。一旦接到連接請(qǐng)求,服務(wù)方可以根據(jù)情況建立或拒絕連接。 在這次設(shè)計(jì)中,我們小組三人通力合作,不驕不躁,始終共同進(jìn)行設(shè)計(jì) ,并最終很好的實(shí)現(xiàn)了設(shè)計(jì)要求。 李朋偉:代碼 處理 , 論文文檔 編寫 。 【 5】 楊延雙等 , 《 TCP/IP 協(xié)議分析及應(yīng)用》 , 機(jī)械工業(yè)出版社 , 202021。 《網(wǎng)絡(luò)編程》課程設(shè)計(jì) 26 【 9】 (英 )馬修 //(英 )斯通斯 |譯者 :陳健 , 《 Linux 程序設(shè)計(jì) (第 3 版 )》 , 人民郵電出版社 ,20200701。 。 【 11】 劉曉輝 //張劍宇 //張棟 , 《網(wǎng)絡(luò)服務(wù)搭建 配置與管理大全 (Linux 版 )》 , 電子工業(yè)出版社 , 20200301。 【 7】 (美)多納霍 、 (美)卡爾弗特著,陳宗斌等譯 , 《 TCP/IP Sockets 編程( C 語言實(shí)現(xiàn))(第 2 版)》 , 清華大學(xué)出版社 , 20201101 第二版。 【 3】 常志文 , 《 TCP/IP 網(wǎng)絡(luò)互連第 3 卷 :客戶 /服務(wù)器編程及應(yīng)用 :Linux/POSIX Socket》 ,人民郵電出版社 , 2020 年 1 月第一版。 成員分工 張栢菁: 系統(tǒng)分析, 代碼編寫及處理。 客戶方發(fā)送的消息可以是文本,也可以是二進(jìn)制信息流。也就是說,客戶方可以通過服務(wù) 方所在機(jī)器的 IP地址或機(jī)器名稱和端口號(hào)唯一的確定方式來呼叫服務(wù)方。當(dāng)兩個(gè)應(yīng)用之間需要采用 SOCKET 通信時(shí),首先需要在兩個(gè)應(yīng)用之間(可《網(wǎng)絡(luò)編程》課程設(shè)計(jì) 25 能位于同一臺(tái)機(jī)器,也可能位于不同的機(jī)器)建立 SOCKET 連接,發(fā)起呼叫連接請(qǐng)求的一方為客戶方,接受呼叫連接請(qǐng)求的一方成為服務(wù)方。 Socket 用于在兩個(gè)基于 TCP/IP 協(xié)議的應(yīng)用程序之間相互通信。 圖 16 注冊(cè)用戶 linkway,密碼 222 圖 16 注冊(cè)用戶 linkway 圖 17 用戶 linkway 登陸 圖 17 linkway 登陸 圖 18 查詢現(xiàn)在在線用戶名單 圖 18 在線名單 圖 19 bosn 向 linkway 發(fā)起聊天 《網(wǎng)絡(luò)編程》課程設(shè)計(jì) 24 圖 19bosn 向 linkway 發(fā)送消息 圖 110linkway 接收 bosn 發(fā)來消息 圖 110 linkway 接收 bosn 消息 1 圖 111 linkway 向 bosn 回復(fù)信息 圖 11 linkway 對(duì) bosn 的回復(fù) 1 圖 112bosn 接收 linkway 回復(fù)信息 圖 112 bosn 接收 linkway 回復(fù) 至此,系統(tǒng)已經(jīng)正確完成了用戶 bosn 和 linkway 的注冊(cè)、登錄、 聊天功能。 talk_to_server()。 exit(1)。 break。 switch(response) { case FAIL: printf(\nRecived From Server: Failed\n)。 bzero(message,MESSAGE_SIZE+1)。 bzero(option,OPTION_SIZE+1)。 scanf(%s,password)。 exit(0)。 send_request_to_server(mand_option, 0, receiver_user_ID, message_buffer)。 case TALK_TO: printf(Input Receiver User_ID:)。 send_request_to_server(mand_option, 0, 0, 0)。 case LOGIN: printf(Input Your User_ID:)。 printf(Input Your Password:)。 scanf(%d,amp。 printf(%d:TALK_TO\n,TALK_TO)。 while(mand_option!=EXIT){ printf(Command Option:\n)。 // 一個(gè) 很大的緩沖 區(qū) , 實(shí)際MESSAGE_SIZE 內(nèi)有效 bzero(message_buffer,BUFFER_SIZE)。 user_iduser_list_buffer+MESSAGE_SIZE。 return 。 ftl(client_socket, F_SETFL, flags)。 int flags = ftl(client_socket, F_GETFL, 0)。 return 。 if(length0) { printf(Receive Data From Server Failed\n)。 bzero((char*)amp。buffer,BUFFER_SIZE,0)0) { printf(Socket Send Data Failed Or Closed\n)。 if(option) memcpy(, option, OPTION_SIZE)。buffer,BUFFER_SIZE)。 return FAIL。 } 《網(wǎng)絡(luò)編程》課程設(shè)計(jì) 16 = htons(CHAT_SERVER_PORT)。 = AF_INET。 return FAIL。 if( client_socket 0) { printf(Create Socket Failed!\n)。 //把一段內(nèi)存區(qū)的內(nèi)容全部設(shè)置為 0 = AF_INET。 // 一個(gè)很大的緩沖區(qū) , 實(shí)際PASSWORD_SIZEE 內(nèi)有效 static int client_socket。 pthread_exit (NULL)。 pthread_attr_destroy(amp。 } if( pthread_create(amp。client_addr,amp。child_thread_attr,PTHREAD_CREATE_DETACHED)。 pthread_attr_t child_thread_attr。 pthread_mutex_init(amp。buffer)。 pthread_exit(NULL)。 int length = recv(new_server_socket,(char*)amp。 int request = NO_COMMAND。 send(client_socket, (chat_package *)amp。 return 。 memcpy(, ((chat_package *)receive_buffer)from, MESSAGE_SIZE)。 send(client_socket, (chat_package *)amp。 case GET_USER_LIST: memcpy(, USER_LIST, OPTION_SIZE)。 switch(((chat_package *)receive_buffer)type) { case REGISTER: = user_register(user_ID, password, client_socket)。 char * user_ID = ((chat_package *)receive_buffer)from。 《網(wǎng)絡(luò)編程》課程設(shè)計(jì) 11 } return server_socket。server_addr,sizeof(server_addr))) { printf(Server Bind Port : %d Failed!, CHAT_SERVER_PORT)。 int server_socket = socket(AF_INET,SOCK_STREAM,0)。server_addr,sizeof(server_addr))。user_table_mutex)。 pthread_mutex_unlock(amp。 } } for(i=0。iUSER_AMOUNT_MAX。 } /************************************************************ *函數(shù)名稱 : user_change_register *正常返回值 : 注冊(cè)成功 SUCCEED,注冊(cè)失敗 FAIL *函數(shù)執(zhí)行失敗 : 注冊(cè)重復(fù)的 user_ID,注冊(cè)失敗 . *函數(shù)功能的其他說明 : 不改變當(dāng)前用戶的登錄狀態(tài) *參數(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