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

正文內容

基于udp協(xié)議的網絡聊天工具設計(已改無錯字)

2022-12-06 18:27:58 本頁面
  

【正文】 ocal, buf, 1024, 0, (SOCKADDR*)amp。m_addrfrom, amp。m_fromlen)。 sendto(m_sockLocal, buf, 1024, 0, (SOCKADDR*)amp。m_addrfrom, sizeof(m_addrfrom))。 重慶科技學院《 Windows 程序設計 》課程設計報告 8 鏈表的維護以及消息的廣播 在 該程序 的服務器端 設計了一個 鏈 表 ,用來保存所有在線的客戶端的 IP 地址。當服務器端收到客戶端發(fā)送來的連接請求消息時,便把該客戶端的 IP 加人到建立的鏈表中去,在廣播消息的時候可以通過遍歷該鏈表將消息發(fā)送給每一個客戶端。 下面分別是建立鏈表、遍歷鏈表、增加刪除鏈表的具體實現(xiàn)代碼: //定義一個用來保存 IP 的鏈表 listCString IPlist。 listCString::iterator iter。 //對鏈表的增加、刪除 (IP)。 (IP)。 // 遍歷鏈表以 廣播接收到的客戶消息 for (iter = ()。 iter != ()。 iter++) //從鏈表的開始結點到結束結點 { IP = (*iter)。 =i_addr(IP)。 sendto(m_sockLocal, buf, 1024, 0, (SOCKADDR*)amp。m_addrfrom, sizeof(m_addrfrom))。 } 連接請求與斷開連接 當客戶端開啟并發(fā)出連接信息時,在服務器端判斷,如果是連接請求信息“ connect”則如上一節(jié)所述將其 IP 加入鏈表同時加入 ListBox顯示出來,并向客戶端發(fā)送連接成功的確認信息。如果服務器端將某個 IP 從鏈表中刪除,也需要給客戶端發(fā)送一個斷開連接提示信息。若是客戶端選則了斷開連 接,則當服務器端收到相應的斷開信息后就將鏈表中對應的 IP 刪除。 客戶端的設計 客戶 器端程序流程設計 下圖為客戶端的 程序流程圖,和服務器相同程序一開始便使用 socket 函數建立套接字初始化 WinSock 環(huán)境 。然后輸入服務器端的 IP 地址并發(fā)起連接請求,如果連接超時 則返回輸入 IP 狀態(tài),若成功則可發(fā)送和接收消息,在此過程中如果服務器將本客戶端斷開,則返回輸入 IP 態(tài)。若客戶端自己選擇與服務器斷開,則向服務器發(fā)送斷開信息并返回到輸入重慶科技學院《 Windows 程序設計 》課程設計報告 9 IP 狀態(tài)繼續(xù)循環(huán),知道關閉窗口。 開始初始化Wi n S o ck環(huán) 境發(fā)送連接信息并等待回應輸入服務器I P 地址等是否連接成功?消息發(fā)送和接收是否為斷開消息?YNNY 圖 33 客戶端程序流程圖 客戶 端界面設計 與服務器端的界面設計相同,只需根據需求設計出相應的控件,客戶端界面設計如下圖所示: 圖 34 客戶端界面設計 重慶科技學院《 Windows 程序設計 》課程設計報告 10 客戶端的功能實現(xiàn) (1).初始化 WinSock環(huán)境 與服務器端基本相同, 具體代碼如下: // socket 函數建立套接字 WSAStartup(MAKEWORD(2, 0), amp。m_WSAData)。 //初始化套接字 m_sockLocal = socket(AF_INET, SOCK_DGRAM, 0)。 //創(chuàng)建本地服務套接 字 WSAAsyncSelect(m_sockLocal, GetSafeHwnd(), WM_SOCKET, FD_READ)。 //選擇需要處理的網絡時間 = i_addr(m_Str_IP)。 //服務器 IP 地址 = AF_INET。 //協(xié)議族 = htons(9001)。 //服務器斷口 bind(m_sockLocal, (SOCKADDR*)amp。m_addr_in, sizeof(m_addr_in))。 //綁定 在套接字建立好之后只需用以下兩個函數就可以收發(fā)信息了,注意需指明長度。 //收發(fā)信息 recvfrom(m_sockLocal, buf, 1040, 0, (SOCKADDR*)amp。m_addrfrom, amp。m_fromlen)。 sendto(m_sockLocal, buf, 1024, 0, (SOCKADDR*)amp。m_addrto, sizeof(m_addrto))。 (2). 與服務器連接斷開的具體實現(xiàn) 當點擊連接按鈕后,客戶端向服務器端發(fā)出一個連接請求信息,然后等待回應,如果連接不成功則返回,成功后則可進行消息的接收和發(fā)送。若連接成功后用戶點擊斷開連接按鈕,則程序向服務器端發(fā)出斷開連接信息。具體實現(xiàn)代碼如下: 連接請求: //點擊 連接按鈕,發(fā)送連接請求信息 void CUDPClientDlg::OnBUTTONConnect() { // TODO: Add your control notification handler code here ()。 UpdateData(TRUE)。 if(m_Str_IP == ) { AfxMessageBox(TEXT(請輸入服務器 IP 地址 !))。 return。 } //發(fā)送連接請求 char bufConnect[8] = {connect}。 = i_addr(m_Str_IP)。 = AF_INET。 = htons(8008)。 sendto(m_sockLocal, bufConnect, 7, 0, (SOCKADDR*)amp。m_addrto, sizeof(m_addrto))。 /
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1