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

正文內(nèi)容

c基于socket的網(wǎng)絡(luò)聊天室(doc畢業(yè)設(shè)計(jì)論文)(編輯修改稿)

2025-07-25 08:22 本頁面
 

【文章內(nèi)容簡介】 象從服務(wù)器資源管理器拖到窗體或設(shè)計(jì)器上,即可創(chuàng)建 OdbcConnection、OdbcDataAdapter 和 OdbcCommand 對象。 在服務(wù)器資源管理器中,右擊“數(shù)據(jù)連接”,然后單擊“添加連接”。在“數(shù)據(jù)鏈接屬性”對話框中,單擊“提供程序”選項(xiàng)卡。 單擊“用于 ODBC 驅(qū)動程序的 Microsoft OLE DB 提供程序”,然后單擊“下一步”。 從列表中選擇要訪問的 ODBC 數(shù)據(jù)源,或者鍵入要訪問的 ODBC 數(shù)據(jù)源的名稱。 鍵入登錄到數(shù)據(jù)源時要用于身份驗(yàn)證的“用戶名稱”。 鍵入登錄到數(shù)據(jù)源時要用于身份驗(yàn)證的密碼。 單擊“確定”。 從應(yīng)用程序連接到 ODBC 數(shù)據(jù)源。,一是使用 Visual Studio .NET 設(shè)計(jì)器直觀地完成,一是通過使用代碼創(chuàng)建數(shù)據(jù)連接對象以編程方式完成。以直觀方式連接到 ODBC 數(shù)據(jù)源Visual Studio 支持通過以下方式創(chuàng)建數(shù)據(jù)對象,即將項(xiàng)從服務(wù)器資源管理器或“工具箱”的“數(shù)據(jù)”選項(xiàng)卡中拖到窗體或設(shè)計(jì)器上。從服務(wù)器資源管理器創(chuàng)建連接 在服務(wù)器資源管理器中創(chuàng)建與 ODBC 數(shù)據(jù)源的“數(shù)據(jù)連接” 將連接拖到窗體或設(shè)計(jì)器上。OdbcConnection 對象出現(xiàn)在組件欄中。將 OdbcConnection 拖到窗體或設(shè)計(jì)器上。一個未配置的 OdbcConnection 對象出現(xiàn)在組件欄中。在“屬性”窗口中,單擊 ConnectionString 屬性。在下拉列表中選擇現(xiàn)有連接,或者單擊“新建連接”打開“數(shù)據(jù)鏈接屬性”對話框并配置新連接。 ODBC 數(shù)據(jù)源您可以直接在代碼中創(chuàng)建 OdbcConnection 對象。 MFC 的ODBC編程通過VC++中MFC ODBC對數(shù)據(jù)庫訪問技術(shù)簡單介紹,工程人員在軟件開發(fā)過程中,可以根據(jù)實(shí)際情況選擇相關(guān)技術(shù),減少了軟件開發(fā)的工作量,縮短開發(fā)周期,提高了效率和軟件的可靠性。MFC的ODBC類對較復(fù)雜的ODBC API進(jìn)行了封裝,提供了簡化的調(diào)用接口,從而大大方便了數(shù)據(jù)庫應(yīng)用程序的開發(fā)。程序員不必了解ODBC API和SQL的具體細(xì)節(jié),利用ODBC類即可完成對數(shù)據(jù)庫的大部分操作。MFC的ODBC類主要包括:CDatabase類:主要功能是建立與數(shù)據(jù)源的連接。CRecordset類:該類代表從數(shù)據(jù)源選擇的一組記錄(記錄集),程序可以選擇數(shù)據(jù)源中的某個表作為一個記錄集,也可以通過對表的查詢得到記錄集,還可以合并同一數(shù)據(jù)源中多個表的列到一個記錄集中.通過該類可對記錄集中的記錄進(jìn)行滾動、修改、增加和刪除等操作。CRecordView類:提供了一個表單視圖與某個記錄集直接相連,利用對話框數(shù)據(jù)交換機(jī)制(DDX)在記錄集與表單視圖的控件之間傳輸數(shù)據(jù)。該類支持對記錄的瀏覽和更新,在撤銷時會自動關(guān)閉與之相聯(lián)系的記錄集。CFieldExchange類:支持記錄字段數(shù)據(jù)交換(DFX),即記錄集字段數(shù)據(jù)成員與相應(yīng)的數(shù)據(jù)庫的表的字段之間的數(shù)據(jù)交換。該類的功能與CDataExchange類的對話框數(shù)據(jù)交換功能類似。CDBException類:代表ODBC類產(chǎn)生的異常。概括地講,CDatabase針對某個數(shù)據(jù)庫,它負(fù)責(zé)連接數(shù)據(jù)源;CRecordset針對數(shù)據(jù)源中的記錄集,它負(fù)責(zé)對記錄的操作;CRecordView負(fù)責(zé)界面,而CFieldExchange負(fù)責(zé)CRecordset與數(shù)據(jù)源的數(shù)據(jù)交換 4 需求分析 開發(fā)平臺應(yīng)用本程序是在windows XP的系統(tǒng)下用Visual C++,用的是Microsoft Accesss的數(shù)據(jù)庫。 網(wǎng)絡(luò)聊天室的流程及模型圖 流程圖 系統(tǒng)數(shù)據(jù)模型(ER圖)賬號頭像 密碼 用 戶 port ip n 系統(tǒng)數(shù)據(jù)模型圖用戶( 賬號 ,密碼,IP,PORT,頭像) 網(wǎng)絡(luò)聊天室的主要實(shí)現(xiàn) 登陸以及身份確認(rèn)(密碼驗(yàn)證)功能的實(shí)現(xiàn):用戶在登錄界面輸入用戶ID和密碼,系統(tǒng)進(jìn)行用戶身份驗(yàn)證,如果通過用戶身份驗(yàn)證則轉(zhuǎn)入相應(yīng)的工作界面,如果沒有通過用戶身份驗(yàn)證則顯示下列信息:用戶名或者密碼錯誤。用戶可以重新輸入正確的ID和密碼。 輸入用戶名,密碼 確認(rèn)提交用戶身份驗(yàn)證結(jié)果noYes 顯示聊天頁面顯示錯誤信息圖 用戶登陸的界面:采用填文本框的方式填寫用戶名,密碼,服務(wù)器IP,和端口,以及確定、退出、注冊按鈕。 用戶登錄界面圖其中用戶名,服務(wù)器IP, 端口號都用到了注冊表存取配置信息技術(shù)。具體實(shí)現(xiàn)為:DWORD Size = 20。TCHAR Values[20]。CRegKey RegKey。if((HKEY_LOCAL_MACHINE,Software\\Chat\\ChatRoom) == ERROR_SUCCESS){if((Values,LoginName,amp。Size)==ERROR_SUCCESS)m_sUId = Values。Size = 20。if((Values,Port,amp。Size)==ERROR_SUCCESS){m_Port = atoi(Values)。} Size = 20。if((Values,SeverIP,amp。Size)==ERROR_SUCCESS){m_IP = Values。}UpdateData(false)。}else{SetDlgItemText(IDC_EDIT2,2222)。 SetDlgItemText(IDC_IP,CPublic::GetLocalIp())。}意思是如果注冊表中存儲到有用戶名,服務(wù)器IP,端口號等這些信息,那么就從注冊表中把這些信息的值取出來賦給和登錄界面的控件相對應(yīng)的變量上,然后調(diào)用UpdateData(false)。方法把變量的值更新到與變量相關(guān)聯(lián)的控件上,如果注冊表中沒用這些信息,那么就把端口號控件框設(shè)為2222,然后把服務(wù)器的IP地址控件框通過調(diào)用CPublic::GetLocalIp() 進(jìn)行設(shè)置。 CPublic為一個公共類,其中主要就是一個GetLocalIp()方法,這個方法的作用就是獲取本機(jī)的IP,這是為了測試及演示的方便性考慮的。建CPubic這個公共類的主要目的是為了在各個頁面更方面的調(diào)用GetLocalIp()方法。界面上有3個button按鈕。為MFC的取消按鈕,功能及為取消登錄。功能:彈出注冊界面注冊界面中可以輸入用戶名,密碼,可以選擇頭像。 注冊的原理為套接字加消息機(jī)制把注冊信息(用戶名,密碼,頭像)傳給服務(wù)器。當(dāng)服務(wù)器返回RegisterOK$字符串時及表示登錄成功。其中調(diào)用了InitSocketClient()函數(shù) 這個函數(shù)主要用做客服端socket的建立和連接服務(wù)器其中的winsocket編程之套接字原理如下: 套接字原理圖注冊成功后就可以登錄了。把用戶名,密碼等信息用Socket傳給服務(wù)器,返回posswordok字符串及登錄成功。之后把用戶信息存入注冊表中。之后進(jìn)入聊天界面。 客服端聊天功能實(shí)現(xiàn)用戶聊天界面,上面部分顯示有用戶的賬號,服務(wù)器的IP ,和用戶自己的IP地址。 頭文件中定義了個CString SIP 。然后用((CChatClientApp*)AfxGetApp())SIP。進(jìn)行調(diào)用。我的IP的值依然是調(diào)用CPublic::GetLocalIp()函數(shù)得到的。下面就是消息區(qū):左邊為在線用戶列表,其中每一項(xiàng)為用戶的頭像和用戶名初始化列表為一個函數(shù),如下:BOOL CChatClientDlg::InitListCtrl(){//圖像列表控制(CImageList)是相同大小圖像的一個集合,每個集合中均以0為圖像的索引序號基數(shù),圖像列表通常由大圖標(biāo)或位圖構(gòu)成,其中包含透明位圖模式(32, 32, ILC_MASK|ILC_COLOR8, 0, 7)。 //Create 初始化圖像列表并for(int i=0。 i=6。 i++){(AfxGetApp()LoadIcon(IDI_ICON1+i))。//添加一個或多個圖象到圖象列表中}(amp。m_imageList, LVSIL_SMALL)。//指定一個圖象列表到列表視圖控件//CListCtrl類封裝“列表視圖控件”功能,顯示每個包含圖標(biāo)(列表視圖中)和標(biāo)簽的收集。除圖標(biāo)和標(biāo)簽外,每一項(xiàng)還能有顯示在圖標(biāo)和標(biāo)簽的右邊的列中的信息CRect rect。//CRect類與Windows RECT結(jié)構(gòu)相似,并且還包括操作CRect對象和Windows RECT結(jié)構(gòu)的成員函數(shù)//RECT結(jié)構(gòu)定義了矩形的左上角坐標(biāo)和右下角坐標(biāo)(amp。rect)。//該函數(shù)獲取窗口客戶區(qū)的坐標(biāo)。(0, _T(用戶列表), LVCFMT_CENTER, )。//插入列表視圖控件中的新列 return TRUE。}然后這個聊天室的核心就是用到了套接字非阻塞模式中的WSAAsyncSelect(異步選擇)模型簡述:通知套接口有請求事件發(fā)生. include int PASCAL FAR WSAAsyncSelect ( SOCKET s, HWND hWnd,unsigned int wMsg, long lEvent )。 s 標(biāo)識一個需要事件通知的套接口的描述符.hWnd 標(biāo)識一個在網(wǎng)絡(luò)事件發(fā)生時需要接收消息的窗口句柄.wMsg 在網(wǎng)絡(luò)事件發(fā)生時要接收的消息.lEvent 位屏蔽碼,用于指明應(yīng)用程序感興趣的網(wǎng)絡(luò)事件集合.注釋:本函數(shù)用來請求Windows Sockets DLL為窗口句柄發(fā)一條消息-.本函數(shù)自動將套接口設(shè)置為非阻塞模式.lEvent參數(shù)由下表中列出的值組成.值意義:FD_READ 欲接收讀準(zhǔn)備好的通知.FD_WRITE 欲接收寫準(zhǔn)備好的通知.FD_OOB 欲接收帶邊數(shù)據(jù)到達(dá)的通知.FD_ACCEPT 欲接收將要連接的通知.FD_CONNECT 欲接收已連接好的通知.FD_CLOSE 欲接收套接口關(guān)閉的通知.   啟動一個WSAAsyncSelect()將使為同一個套接口啟動的所有先前的WSAAsyncSelect()作廢. 例如,要接收讀寫通知,應(yīng)用程序必須同時用FD_READ和FD_WRITE調(diào)用WSAAsyncSelect(),如下:rc = WSAAsyncSelect(s, hWnd, wMsg, FD_READ|FD_WRITE)。程序中為:::WSAAsyncSelect(((CChatClientApp*)AfxGetApp())m_socketClient,thisGetSafeHwnd(),WM_CLIENT,FD_CONNECT|FD_READ|FD_WRITE|FD_CLOSE)。其中WM_CLIENT為自定義的消息然后為它定義了一個消息處理函數(shù)LRESULT CChatClientDlg::OnClient(WPARAM wParam,LPARAM lParam)其中主要判斷l(xiāng)Param 為FD_CONNECT FD_READ FD_WRITE還是FD_CLOSE以及對相關(guān)情況進(jìn)行處理其中FD_READ情況為主,包含了登錄的情況,其他用戶退出的情況以及正常發(fā)送消息的情況。右邊為消息顯示區(qū)域:有服務(wù)器發(fā)送的消息,其他用戶發(fā)送的消息,以及自己發(fā)送的消息。最下邊的區(qū)域?yàn)榫帉懽约旱南ⅲ缓笸ㄟ^發(fā)送按鈕發(fā)送出去 服務(wù)器端功能實(shí)現(xiàn)服務(wù)器端的界面和客服端聊天界面基本一樣,只是最上面的多了個啟動服務(wù)器按鈕 其中也用到了套接字非阻塞模式中的WSAAsyncSelect自定義了WM_SERVER消息及處理函數(shù)LRESULT CChatSeverDlg::OnServer(WPARAM wParam,LPARAM lParam)這個函數(shù)也是其處理核心。與客服端的處理函數(shù)類似。然后還建了一個CUserInformation類用于儲存用戶的一些資料。成員函數(shù)如下:SOCKET ISocket。int IIndex。CString IName。CString IPassword。int InItem。然后建立了一個CUserRecordSet類繼承自CRecordset這個類主要與Access的user表進(jìn)行對應(yīng)。該CUserRecordSet將包含一組的數(shù)據(jù)成員
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1