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

正文內容

vc網(wǎng)絡聊天軟件課程設計(存儲版)

2025-07-25 23:47上一頁面

下一頁面
  

【正文】 // butten pack //表情 3 (IDB_BITMAP43)。 // butten pack //表情 5 (IDB_BITMAP45)。 // butten pack //表情 7 (IDB_BITMAP47)。 // butten pack //表情 9 (IDB_BITMAP49)。 // butten pack //表情 11 (IDB_BITMAP51)。 // butten pack44 //歷史聊天記錄按鈕 (IDB_BITMAP2)。 // butten pack //建立服務器按鈕 (IDB_BITMAP4)。 // butten pack //頭像初始化 (IDB_BITMAP33)。 ((CIPAddressCtrl *) (GetDlgItem(IDC_SERVERIP)))SetAddress(f0,f1,f2,f3)。 }}void CChatDlg::OnBnClickedConnect(){ if(!m_bInit)46 { BYTE f0,f1,f2,f3。 SetDlgItemText(IDC_SHOWTEXT,成功連接服務器)。 return。 ()。 } } }}void CChatDlg::ClearContent(){ if(m_bClient)48 { ()。47 m_bInit=true。 ()。 ()。 CClientSocket::GetLocalHostName(name)。 pButton=(CButton*)GetDlgItem(IDC_SEND)。 pButton=(CButton*)GetDlgItem(IDC_CONNECT)。 pButton=(CButton*)GetDlgItem(IDC_BQ12)。 pButton=(CButton*)GetDlgItem(IDC_BQ10)。 pButton=(CButton*)GetDlgItem(IDC_BQ8)。 pButton=(CButton*)GetDlgItem(IDC_BQ6)。 pButton=(CButton*)GetDlgItem(IDC_BQ4)。 pButton=(CButton*)GetDlgItem(IDC_BQ2)。 // 獲取 IP 控件的指針 cwEnableWindow(true)。 // 獲取 IP 控件的指針 cwEnableWindow(true)。 // 獲取 IP 控件的指針 cwEnableWindow(true)。 // 獲取 IP 控件的指針 cwEnableWindow(true)。 if(pSysMenu!=NULL) { CString strAboutMenu。 pDCSetTextColor(RGB(165,165,165))。}void CChatDlg::DoDataExchange(CDataExchange *pDX){ CDialog::DoDataExchange(pDX)。protected: DECLARE_MESSAGE_MAP()}。public: afx_msg void OnBnClickedButton1()。 CString m_sMsgList。public: CString name。protected: virtual void DoDataExchange(CDataExchange *pDX)。1) 程序開始運行,進行對話框的初始化是在 OnInitDialog()函數(shù)中實現(xiàn)的,在開始的時候自動獲得本地機器的 IP 地址并顯示在 IP Address Control 控件中。}CMessg::~CMessg(){}//CMessg 成員函數(shù)void CMessg::Init(){ m_strText = _T()。public: virtual ~CMessg()。 } m_dlgSetDlgItemText(IDC_SHOWTEXT,Serverr Has Been Set OK!)。public: virtual void OnAccept(int nErrorCode)。 } return result。 break。 break。 break。 break。 f1=。f3)//獲得IP 地址{26 struct hostent FAR *lpHostEnt=gethostbyname(sHostName)。 sIpAddress=i_ntoa(inAddr)。sHostName,CString 25amp。sHostName){ char szHostName[256]。 } Close()。 m_dlgCloseSessionSocket()。 m_aSessionOut=new CArchive(m_sfSocketFile,CArchive::store)。 if(!m_dlgm_bClient) { for(POSITION pos=m_dlg()。m_dlgSetDlgItemText(IDC_SHOWTEXT,m_dlgm_sMsgList)。}CClientSocket::~CClientSocket(){ if(m_aSessionIn) delete m_aSessionIn。public: CClientSocket()。sHostName,BYTE amp。 BOOL SendMessage(CMessg *msg)。類定義代碼如下:include //命令目標class CChatDlg。 聊天程序的實現(xiàn)(1)首先啟動 Visual C++ ,利用 MFC AppWizard[EXE]建立一個新的MFC 工程,工程名為 chat,在 MFC AppWizard Step1 的時候選擇 Dialog based 即基于對話框,在 Step4 時勾選 Windows Sockets 選項(如 圖表 02) ,其他默認值下一步。14我們利用 MFC 提供的 CSocket 類來編程實現(xiàn)一個網(wǎng)絡聊天室。服務端程序編寫流程如下:1) 創(chuàng)建套接字(socket) ;2) 將套接字綁定到一個本地地址和端口上(bind) ;3) 等待接受數(shù)據(jù)(recvfrom) ;4) 關閉套接字。在服務器端,當調用 accept 函數(shù)時,程序就會等待,等待客戶調用connect 函數(shù)發(fā)出連接請求,然后服務器端接受該請求,于是雙方就建立了連11接。 服務端需要完成的三件事1) 在特定端口等待連接請求,并需要維護一個客戶連接表,已記錄所有成功連接。需要注意的是,CArchive 類對象不能與數(shù)據(jù)報(UDP)套接字一起工作,因此對于數(shù)據(jù)報套接字,CAsyncSocket 和 CSocket 的使用方法是一樣的。由于我們對網(wǎng)絡底層的了解比較淺薄,所以這次課程設計我們選擇了采用CSocket 類來編程實現(xiàn)。8 利用 CSocket 進行有連接的通信微軟的 MFC 把復雜的 WinSock API 函數(shù)封裝到類里,這使得編寫網(wǎng)絡應用程序更容易。注意 Accept 成員函數(shù)采用對新的空 CSocket 對象的引用作為它的參數(shù)。 套接字類型: SOCK_STREAM (默認值)或 SOCK_DGRAM 。int nPort = 27。我們稱這種應用程序為 Windows Sockets 應用程序。 5 Winsock 介紹Windows Sockets 規(guī)范以 . Berkeley 大學 BSD UNIX 中流行的 Socket接口為范例定義了一套 Micosoft Windows 下網(wǎng)絡編程接口。找到大量資料之后,我們還有根據(jù)課程設計的要求進行篩選資料,最后選定方案和確定實現(xiàn)方法。它可以在網(wǎng)絡環(huán)境下進行實時的一對多或多對多的匿名交談。所以網(wǎng)絡聊天的程序早已被前人所實現(xiàn),而且實現(xiàn)的方法多種多樣。此外,在一個特定版本 Windows 的基礎上,Windows Sockets 也定義了一個二進制接口(ABI ) ,以此來保證應用 Windows Sockets API 的應用程序能夠在任何網(wǎng)絡軟件供應商的符合 Windows Sockets協(xié)議的實現(xiàn)上工作。 MFC 的 CAsyncsocket 類和 CSocket 類構造一個 CAsyncSocket 對象并使用該對象創(chuàng)建基礎 SOCKET 句柄。上面的第一個 Create 調用使用默認參數(shù)創(chuàng)建流式套接字,第二個 Create 調用創(chuàng)建具有指定端口和地址的數(shù)據(jù)文報套接字。很可能要始終依賴此參數(shù)的默認值。不要對這個新套接字對象調用 Create 。為了給程序員提供更方便的接口以自動處理這些任務,MFC 給出 了CSocket 類,這個類是由 CAsyncSocket 類繼承下來的,它提供了比CAsyncSocket 更高層的 WinSock API 接口。以下介紹的針對字節(jié)流型(即基于 TCP/IP 協(xié)議)套接字的操作步驟中,只有第 3 和第 4 步對于客戶端和服務端操作是不同的,其他步驟都相同。   ④ 重載 CSocket 類的部分函數(shù)。 客戶端需要完成的三件事1) 建立與維護服務器的連接,并隨時監(jiān)測連接狀態(tài)。而對客戶端來說,當它發(fā)起連接請求,服務器端接受請求后,在服務端就保存了改客戶端的 IP 地址和端口的信息。在 UDP 的套接字編程時,利用的是 sendto 和 recvfrom 這兩個函數(shù)實現(xiàn)數(shù)據(jù)的發(fā)送和接收,而基于 TCP 的套接字編程時,發(fā)送數(shù)據(jù)是調用 send 函數(shù),接受數(shù)據(jù)調用 recv 函數(shù)。這樣就形成了一個采用Client/Server 結構的并可以多人同時在線的聊天室。左半邊由上自下分別是:頭像、昵稱、當天聊天信息顯示、12 個表情按鈕、消息輸入框和發(fā)送按鈕。 CSocketFile *m_sfSocketFile。sHostName)。f2,BYTE amp。 中的代碼:include include include include// CClientSocketCClientSocket::CClientSocket(){ m_aSessionIn=NULL。}//ClientSocket 成員函數(shù)void CClientSocket::OnReceive(int nErrorCode){ CSocket::OnReceive(nErrorCode)。fputs(m_dlgm_tmpMsgList,fp)。 if(tm_hSocket!=thism_hSocket) { tSendMessage(amp。22}/**SendMessage()函數(shù)的實現(xiàn)*主要功能:*將信息串行化*/BOOL CClientSocket::SendMessage(CMessg *msg){ if(m_aSessionOut!=NULL) { msgSerialize(*m_aSessionOut)。 m_aSessionIn=NULL。}/**OnClose()函數(shù)的實現(xiàn)*主要功能:*關閉套接字的連接*/void CClientSocket::OnClose(int nErrorCode){24 m_bClose=true。 if(nRetCode!=0) { //產(chǎn)生錯誤 sHostName=_T(沒有取得)。 return GetLastError()。}/** GetIpAddress ()函數(shù)的實現(xiàn)*主要功能:*獲得本地 IP 地址*/int CClientSocket::GetIpAddress(const CString amp。 } LPSTR lpAddr=lpHostEnth_addr_list[0]。 } return 0。 case WSAEINPROGRESS:
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1