基于windows socket的簡單室課程名稱網(wǎng)絡(luò)編程實用教程實驗4WindowsSocket_第1頁
基于windows socket的簡單室課程名稱網(wǎng)絡(luò)編程實用教程實驗4WindowsSocket_第2頁
基于windows socket的簡單室課程名稱網(wǎng)絡(luò)編程實用教程實驗4WindowsSocket_第3頁
基于windows socket的簡單室課程名稱網(wǎng)絡(luò)編程實用教程實驗4WindowsSocket_第4頁
基于windows socket的簡單室課程名稱網(wǎng)絡(luò)編程實用教程實驗4WindowsSocket_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

課程名稱:網(wǎng)絡(luò)編程實用實驗4:基于WindowsSocket的簡單聊天時間:2015553、41-學(xué)號 :班級:計本7WindowsSocketWSAAsyncSelectwindows下基MFCWindows窗體應(yīng)用程序開發(fā)。WindowsSocketAPI,TCP(提供簡單Windows在窗口初始化函數(shù)OnInitDialog()中,添加窗口初始化及初始化套接字庫的BOOL{//TODO:Addextrainitialization//IP地址設(shè)置為//初始化WinSockWORDversion=MAKEWORD(2,intret=WSAStartup(version,&wsaData);if(ret!=0){TRACE("InitilizeError!\n");//AfxMessageBox(_T("初始化winSock庫失敗}returnTRUE;//returnTRUEunlessyousetthefocustoa}自定義函數(shù)InitAndListen(UINTport)。創(chuàng)建套接字,將套接字與本地端口進(jìn)行綁定并啟動{if(m_hSocket!={m_hSocket=}m_hSocket=socket(AF_INET,SOCK_STREAM,0);ASSERT(m_hSocket!=NULL);m_addr.sin_family=AF_INET;m_addr.sin_port=htons(m_uPort);intret=0;interror=0;ret=bind(m_hSocket,(LPSOCKADDR)&m_addr,sizeof(m_addr));if(ret==SOCKET_ERROR) returnFALSE;}ret=listen(m_hSocket,5); if(ret==SOCKET_ERROR) //listenreturnFALSE;}return}自定義函數(shù)ServerInit(),使用異步選擇模型,判斷是否成功將消息綁定到void{if(WSAAsyncSelect(m_hSocket,AfxGetMainWnd()->m_hWnd,SER_MESSAGE,}自定義函數(shù)Close(),解除異步選擇模void{if{WSAAsyncSelect(m_hSocket,AfxGetMainWnd()->m_hWnd,0,0);m_hSocket=NULL;}}網(wǎng)絡(luò)消息處理函數(shù)OnServerMessage(RAMram,LPARAM{SOCKET intlength,i,j;chars[1024];chart[1024];intlen;intAddrLen=sizeof(SOCKADDR);{case&{//依次獲取連接上來的各個客戶端的}returncase{{{}t[0]={{}}return0;}}returncasereturncase{{{return}t[0]=return}}return}}單擊“開始”按鈕,觸發(fā)OnConnect()處理函void{//TODO:Addyourcontrolnotificationhandlercodehere{}{}

}單擊“發(fā)送”按鈕,觸發(fā)OnSend()處理函void{//TODO:Addyourcontrolnotificationhandlercodehere{}CString{}in.TrimRight("");m_sShowText="我說:"+in;{SOCKETsocket;for(int{in服務(wù)器說}}}單擊“結(jié)束”按鈕,觸發(fā) 處理函void{//TODO:Addyourcontrolnotificationhandlercodehere}自定義函數(shù)DestroyWindow()BOOL{return}(二 (客戶端OnInitDialog()中,添加窗口初始化及初始化套接字庫BOOL{//TODO:Addextrainitialization//IP地址設(shè)置為//初始化WinSockWORDversion=MAKEWORD(2,intret=WSAStartup(version,&wsaData);if(ret!=0){TRACE("InitilizeError!\n");//AfxMessageBox(_T("初始化winSock庫失敗}returnTRUE;//returnTRUEunlessyousetthefocustoa}自定義函數(shù)InitAndConnect(UINTportCStringstrserver)。創(chuàng)建套接字,將BOOLCDlg::InitAndConnect(UINTport,CString{if(m_hSocket!={m_hSocket=}ASSERT(m_hSocket!=NULL);m_addr.sin_port=htons(m_uPort); intret=0;interror=ret=connect(m_hSocket,(LPSOCKADDR)&m_addr,sizeof(m_addr));if(ret==SOCKET_ERROR){returnFALSE;}}return}voidCDlg::{//本函數(shù)用來請求WindowsSocketsDLL為窗口句柄消息//無論它何時檢測到由lEvent參數(shù)指明的網(wǎng)絡(luò)//要發(fā)送的消息由wMsg參數(shù)標(biāo)明.被通知的套接口由s標(biāo)識{}}自定義函數(shù)Close(),解除異步選擇模voidC{if{WSAAsyncSelect(m_hSocket,AfxGetMainWnd()->m_hWnd,0,0);m_hSocket=NULL;}}自定義RecvString(CString&str)recv{}SendString(CStringa)sendvoidCDlg::SendString(CString{{}}網(wǎng)絡(luò)消息處理函數(shù)OnMessage(RAMram,LPARA{CEdit*output=NULL;chars[1024];int{case{}{}

return0;casereturn0;casereturn0;caseFD_CLOSE:returnreturn}}單擊“開始”按鈕,觸發(fā)OnConnect()處理函voidC{//TODO:AddyourcontrolnotificationhandlercodehereBYTEf0,f1,f2,f3;CStringadd;}單擊“發(fā)送”按鈕,觸發(fā)OnSend()處理函voidC{//TODO:Addyourcontrolnotificationhandlercodehere{}CString{}in.TrimRight("");m_sShowText="我說:"+in;{}}單擊“結(jié)束”按鈕,觸發(fā) 處理函

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論