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

正文內(nèi)容

vc網(wǎng)絡(luò)聊天軟件課程設(shè)計(jì)(留存版)

  

【正文】 OG}。 CPtrList m_connectionList。protected: virtual void DoDataExchange(CDataExchange *pDX)。 pDCSetBkColor(RGB(64,36,33))。 } CWnd *cw=GetDlgItem(IDC_SEND)。 // 讓輸入有效41 cw=GetDlgItem(IDC_BQ8)。 hBitmap=(HBITMAP)()。 hBitmap=(HBITMAP)()。 hBitmap=(HBITMAP)()。 hBitmap=(HBITMAP)()。 CString name。 m_bClient=true。 if(tm_bClose==true) { (t_pos)。 } }}void CChatDlg::CloseSessionSocket(){ if(!m_bClient) { for(POSITION pos=()。 CString name。 hBitmap=(HBITMAP)()。 hBitmap=(HBITMAP)()。 hBitmap=(HBITMAP)()。 hBitmap=(HBITMAP)()。 HBITMAP hBitmap=(HBITMAP)()。 // 讓輸入有效 cw=GetDlgItem(IDC_BQ6)。 pSysMenuAppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu)。 DDX_Text(pDX,IDC_SHOWTEXT,m_sShowString)。endif/////////////////////////////////////////////////////////////////////////////// CAboutDlg dialog used for App Aboutint TouXiangNum=0。 //添加的變量public: bool m_bInit。3) 建立服務(wù)器按鈕信息的響應(yīng)函數(shù)。 //實(shí)行串行化if def_DEBUG virtual void AssertValid() const。 m_dlg=dlg。 case WSAETIMEDOUT: result=Attempt to connect timed out without establishing a connection。 case WSAEDESTADDRREQ: result=A destination address is requireed。 } return 0。}/** GetIpAddress ()函數(shù)的實(shí)現(xiàn)*主要功能:*獲得本地 IP 地址*/int CClientSocket::GetIpAddress(const CString amp。 if(nRetCode!=0) { //產(chǎn)生錯(cuò)誤 sHostName=_T(沒(méi)有取得)。 m_aSessionIn=NULL。 if(tm_hSocket!=thism_hSocket) { tSendMessage(amp。}//ClientSocket 成員函數(shù)void CClientSocket::OnReceive(int nErrorCode){ CSocket::OnReceive(nErrorCode)。f2,BYTE amp。 CSocketFile *m_sfSocketFile。這樣就形成了一個(gè)采用Client/Server 結(jié)構(gòu)的并可以多人同時(shí)在線的聊天室。而對(duì)客戶端來(lái)說(shuō),當(dāng)它發(fā)起連接請(qǐng)求,服務(wù)器端接受請(qǐng)求后,在服務(wù)端就保存了改客戶端的 IP 地址和端口的信息。   ④ 重載 CSocket 類的部分函數(shù)。為了給程序員提供更方便的接口以自動(dòng)處理這些任務(wù),MFC 給出 了CSocket 類,這個(gè)類是由 CAsyncSocket 類繼承下來(lái)的,它提供了比CAsyncSocket 更高層的 WinSock API 接口。很可能要始終依賴此參數(shù)的默認(rèn)值。 MFC 的 CAsyncsocket 類和 CSocket 類構(gòu)造一個(gè) CAsyncSocket 對(duì)象并使用該對(duì)象創(chuàng)建基礎(chǔ) SOCKET 句柄。所以網(wǎng)絡(luò)聊天的程序早已被前人所實(shí)現(xiàn),而且實(shí)現(xiàn)的方法多種多樣。找到大量資料之后,我們還有根據(jù)課程設(shè)計(jì)的要求進(jìn)行篩選資料,最后選定方案和確定實(shí)現(xiàn)方法。我們稱這種應(yīng)用程序?yàn)?Windows Sockets 應(yīng)用程序。 套接字類型: SOCK_STREAM (默認(rèn)值)或 SOCK_DGRAM 。8 利用 CSocket 進(jìn)行有連接的通信微軟的 MFC 把復(fù)雜的 WinSock API 函數(shù)封裝到類里,這使得編寫網(wǎng)絡(luò)應(yīng)用程序更容易。需要注意的是,CArchive 類對(duì)象不能與數(shù)據(jù)報(bào)(UDP)套接字一起工作,因此對(duì)于數(shù)據(jù)報(bào)套接字,CAsyncSocket 和 CSocket 的使用方法是一樣的。在服務(wù)器端,當(dāng)調(diào)用 accept 函數(shù)時(shí),程序就會(huì)等待,等待客戶調(diào)用connect 函數(shù)發(fā)出連接請(qǐng)求,然后服務(wù)器端接受該請(qǐng)求,于是雙方就建立了連11接。14我們利用 MFC 提供的 CSocket 類來(lái)編程實(shí)現(xiàn)一個(gè)網(wǎng)絡(luò)聊天室。類定義代碼如下:include //命令目標(biāo)class CChatDlg。sHostName,BYTE amp。}CClientSocket::~CClientSocket(){ if(m_aSessionIn) delete m_aSessionIn。 if(!m_dlgm_bClient) { for(POSITION pos=m_dlg()。 m_dlgCloseSessionSocket()。sHostName){ char szHostName[256]。 sIpAddress=i_ntoa(inAddr)。 f1=。 break。 break。public: virtual void OnAccept(int nErrorCode)。public: virtual ~CMessg()。1) 程序開始運(yùn)行,進(jìn)行對(duì)話框的初始化是在 OnInitDialog()函數(shù)中實(shí)現(xiàn)的,在開始的時(shí)候自動(dòng)獲得本地機(jī)器的 IP 地址并顯示在 IP Address Control 控件中。public: CString name。public: afx_msg void OnBnClickedButton1()。}void CChatDlg::DoDataExchange(CDataExchange *pDX){ CDialog::DoDataExchange(pDX)。 if(pSysMenu!=NULL) { CString strAboutMenu。 // 獲取 IP 控件的指針 cwEnableWindow(true)。 // 獲取 IP 控件的指針 cwEnableWindow(true)。 pButton=(CButton*)GetDlgItem(IDC_BQ4)。 pButton=(CButton*)GetDlgItem(IDC_BQ8)。 pButton=(CButton*)GetDlgItem(IDC_BQ12)。 pButton=(CButton*)GetDlgItem(IDC_SEND)。 ()。47 m_bInit=true。 ()。 SetDlgItemText(IDC_SHOWTEXT,成功連接服務(wù)器)。 ((CIPAddressCtrl *) (GetDlgItem(IDC_SERVERIP)))SetAddress(f0,f1,f2,f3)。 // butten pack //建立服務(wù)器按鈕 (IDB_BITMAP4)。 // butten pack //表情 11 (IDB_BITMAP51)。 // butten pack //表情 7 (IDB_BITMAP47)。 // butten pack //表情 3 (IDB_BITMAP43)。 // 獲取 IP 控件的指針 cwEnableWindow(true)。 // 獲取 IP 控件的指針 cwEnableWindow(true)。 return hbr。 }BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)END_MESSAGE_MAP()CChatDlg::CChatDlg(CWnd *pParent /*=NULL*/) :CDialog(CChatDlg::IDD,pParent){m_sInputText=_T()。public: void ProcessPendingAccept()。 //生成的消息映射函數(shù) virtual BOOL OnInitDialog()。ar){ if (()) { arm_strText。 }void CServerSocket::OnAccept(int nErrorCode)31{ m_dlgProcessPendingAccept()。 的代碼如下:// CServerSocket mand targetclass CChatDlg。 break。 break。 return GetLastError()。 if(lpHostEnt==NULL) { //產(chǎn)生錯(cuò)誤 sIpAddress=_T()。 m_bClose=true。 thism_dlg=dlg。fp = fopen(,a+)。protected:}。public: static int GetLocalHostName(CString amp。其中包含文檔編輯框、按鍵控件、靜態(tài)文本控件組成??蛻舳顺绦蚓帉懥鞒倘缦拢?) 創(chuàng)建套接字(socket) ;2) 向服務(wù)器發(fā)送數(shù)據(jù)(sengto) ;3) 關(guān)閉套接字。103) 監(jiān)控連接狀態(tài),客戶離開或故障時(shí)從列表中刪除相應(yīng)表項(xiàng),并及時(shí)更新連接表。使用 CSocket 對(duì)象涉及 CArchive 和 CSocketFile 類對(duì)象。如果此套接字對(duì)象超出范圍,則連接關(guān)閉。 上面的第一個(gè)構(gòu)造函數(shù)在堆棧上創(chuàng)建一個(gè) CAsyncSocket 對(duì)象,第二個(gè)構(gòu)造函數(shù)在堆上創(chuàng)建 CAsyncSocket 。 Windows Sockets 規(guī)范本意在于提供給應(yīng)用程序開發(fā)者一套簡(jiǎn)單的 API,并讓各家網(wǎng)絡(luò)軟件供應(yīng)商共同遵守。1VC++網(wǎng)絡(luò)聊天軟件摘 要網(wǎng)絡(luò)聊天室,其實(shí)質(zhì)就是基于 Inter 的一種網(wǎng)絡(luò)聊天軟件。它不僅包含了人們所熟悉的 Berkeley Socket 風(fēng)格的庫(kù)函數(shù);也包含了一組針對(duì) Windows 的擴(kuò)展庫(kù)函數(shù),以使程序員能充分地利用 Windows 消息驅(qū)動(dòng)機(jī)制進(jìn)行編程。pSocket Create( nPort, SOCK_DGRAM )。在調(diào)用 Accept 之前,必須構(gòu)造該對(duì)象。下面主要針對(duì)這種方法進(jìn)行講述。2) 及時(shí)接受消息,然后轉(zhuǎn)發(fā)到客戶連接。雖然面向無(wú)連接的 socket 編程無(wú)須建立連接,但是為了完成這次通信,對(duì)于接受端來(lái)說(shuō),它必須先啟動(dòng)以接受客戶端發(fā)送的數(shù)據(jù),因此接收端必須告訴主機(jī)它是在哪個(gè)地址和端口上等待數(shù)據(jù)的到來(lái),接收端(服務(wù)器端)必須調(diào)用bind 函數(shù)將套接字綁定到一個(gè)本地地址和端口上。圖表 0116圖表 02(2)客戶端的界面如圖 圖表 03 所示。 void CloseSocket()。 virtual ~CClientSocket()。FILE* fp。 m_bClose=false。 m_bInit=false。sIpAddress) //獲得本地 IP{ struct hostent FAR *lpHostEnt=gethostbyn
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1