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

正文內(nèi)容

vc網(wǎng)絡(luò)聊天軟件課程設(shè)計(專業(yè)版)

2025-08-06 23:47上一頁面

下一頁面
  

【正文】 ) { POSITION t_pos=pos。 CString ip。 pButtonSetBitmap(hBitmap)。 pButtonSetBitmap(hBitmap)。 pButtonSetBitmap(hBitmap)。 pButtonSetBitmap(hBitmap)。 pButtonSetBitmap(hBitmap)。 // 讓輸入有效 cw=GetDlgItem(IDC_BQ7)。 SetIcon(m_hIcon,FALSE)。 //DDV_MinMaxUInt(pDX,m_uPort,1024,100000)。class CAboutDlg:public CDialog{public: CAboutDlg()。 CClientSocket m_clientsocket。讀取文本框中的信息,調(diào)用 CMessg 類的函數(shù)以實現(xiàn)信息的串行化,然后再調(diào)用 CClientSocket 類的34SendMessage()函數(shù)將信息發(fā)送給建立連接的對方。dc) const。 return FALSE。 case WSAEWOULDBLOCK: result=The socket is marked as nonblocking and the connnection cannot be pleted immediately。 case WSAEFAULT: result=The nSockAddrLen arguement is incorrect。 switch(tag) { case WSANOTINITIALISED: result=A successful AfxSocketInit must occur before using this API.。f0, BYTE amp。 } sHostName=szHostName。 m_aSessionOut=NULL。 } } } } while(!m_aSessionInIsBufferEmpty())。 (*m_aSessionIn)。 //獲得本地 IP static CString ErrorReason(int tag)。 bool m_bInit。對于客戶端,因為是面向用戶,所以外觀和功能都應(yīng)有更高的要求。程序流程圖如下: 方案二:基于 UDP(面向無連接)的 socket 程序UDP(User Data Protocol,用戶數(shù)據(jù)報協(xié)議)是與 TCP 相對應(yīng)的協(xié)議?! 、?調(diào)用 Close()方法來關(guān)閉套接字以終止通信。CSocket 對象提供阻塞模式,這對于 CArchive 的同步操作是至關(guān)重要的。 如果套接字是服務(wù)器,則將套接字設(shè)置為開始偵聽(使用 CAsyncSocket::Listen)來自客戶端的連接嘗試。 例如: CAsyncSocket sock。 網(wǎng)絡(luò)聊天程序的設(shè)計目標(biāo) 本課題是設(shè)計一個網(wǎng)絡(luò)聊天的程序,包括服務(wù)器端和客戶端,主要功能為: 客戶端部分:1、輸入服務(wù)器端 IP 地址和端口號進(jìn)行連接2、發(fā)送消息給服務(wù)器端并顯示服務(wù)器端回傳的消息3、在客戶端增加歷史聊天記錄和當(dāng)天聊天記錄 4、可以設(shè)置個性昵稱、增添快捷表情、更換個性圖像和背景設(shè)計服務(wù)器端部分:1、 立服務(wù)器端與客戶端的連接請求42、接收所有用戶發(fā)送的消息3、向所有在線用戶群發(fā)消息4、在客戶端增加歷史聊天記錄和當(dāng)天聊天記錄 5、可以設(shè)置個性昵稱、增添快捷表情、更換個性圖像和背景設(shè)計通過這次課程設(shè)計,可以比較深入的了解和掌握 WINSOCK 控件基本屬性、方法和事件,熟悉 VC++的開發(fā)環(huán)境。而最為快速的當(dāng)然就是網(wǎng)絡(luò)了。一個網(wǎng)絡(luò)軟件供應(yīng)商必須百分之百地實現(xiàn) Windows Sockets規(guī)范才能做到現(xiàn) Windows Sockets 兼容。 對于服務(wù)器套接字,必須指定端口。如果使用 new 運算符在堆上創(chuàng)建了套接字對象,則您必須負(fù)責(zé)使用 delete 運算符銷毀此對象。在客戶端程序中,除非需要數(shù)據(jù)報套接字,Create()函數(shù)一般情況下應(yīng)該使用默認(rèn)參數(shù)。程序方案比較: 方案一:基于 TCP 的 socket 編程TCP(Transmission Control Protocol,傳輸控制協(xié)議)是基于連接的協(xié)議,也就是說,在正式收發(fā)數(shù)據(jù)前,必須和對方建立可靠的連接。總的來說,我認(rèn)為 TCP 協(xié)議更能滿足目前各行業(yè)對遠(yuǎn)程數(shù)據(jù)傳輸?shù)囊螅峁└€(wěn)定更便利的傳輸通道,滿足了對安全性的要求以及遠(yuǎn)程數(shù)據(jù)傳輸?shù)囊蟆F渲?,CChatApp 和 CAboutDlg 由 AppWizard 實現(xiàn);另外,CServerSocket 和 CClientSocket 分別負(fù)責(zé)服務(wù)端和客戶端的網(wǎng)絡(luò)通信功能;CChatDlg 為程序的主控類,主界面、通信方式及程序邏輯均由該類實現(xiàn),它繼承自 CDialog 類;CMessgage 是對消息的封裝。sIpAddress)。 m_bInit=false。 int linenum=((CEdit*)21 (m_dlgGetDlgItem(IDC_SHOWTEXT)))GetLineCount()。 } else { m_bClose=true。 CSocket::OnClose(nErrorCode)。 memmove(amp。inAddr,lpAddr,4)。 break。 break。 UINT m_uPort。public: CString m_strText。dc) const{ CObject::Dump(dc)。 afx_msg HCURSOR OnQueryDragIcon()。public: afx_msg void OnBnClickedConnect()。 m_uPort=5000。 ASSERT(IDM_ABOUTBOX 0xF000)。 // 獲取 IP 控件的指針 cwEnableWindow(true)。 // 獲取 IP 控件的指針 cwEnableWindow(true)。 // butten pack //表情 4 (IDB_BITMAP44)。 // butten pack //表情 843 (IDB_BITMAP48)。 // butten pack //表情 12 (IDB_BITMAP52)。 // butten pack //發(fā)送按鈕 (IDB_BITMAP5)。}void CChatDlg::OnSysCommand(UINT nID,LPARAM lParam){ if((nID amp。m_bInit=false。 m_sMsgList=。 } else { ()。 m_bClient=false。 pButton=(CButton*)GetDlgItem(IDC_SETSERVER)。 pButton=(CButton*)GetDlgItem(IDC_BQ11)。 pButton=(CButton*)GetDlgItem(IDC_BQ7)。 pButton=(CButton*)GetDlgItem(IDC_BQ3)。 // 獲取 IP 控件的指針 cwEnableWindow(true)。 // 獲取 IP 控件的指針 cwEnableWindow(true)。 ASSERT((IDM_ABOUTBOX amp。m_hIcon = AfxGetApp()LoadIcon(IDR_MAINFRAME)。 void ClearContent()。 afx_msg void OnPaint()。 }}//CMsg diagnosticsif def_DEBUGvoid CMessg::AssertValid() const{ CObject::AssertValid()。}CMessgCMessg 類主要作用是實現(xiàn)信息的串行化,方便信息的傳輸。 virtual ~CServerSocket()。 break。 break。 //獲取 IP if(lpAddr) { struct in_addr inAddr。 } LPSTR lpAddr=lpHostEnth_addr_list[0]。 CloseSocket()。 m_aSessionOutFlush()。fclose(fp)。m_aSessionOut=NULL。 //獲得本地19計算機名稱 static int GetIpAddress(const CString amp。右半邊有歷史記錄顯示框、歷史記錄顯示按鈕。程序流程圖如下:13 方案比較結(jié)果TCP 與 UDP 最基本的區(qū)別在于基于連接與無連接,相比之下,第一種方案對系統(tǒng)的要求以及數(shù)據(jù)量都比較大,但是保證數(shù)據(jù)的正確性與數(shù)據(jù)順序,在傳輸大量數(shù)據(jù)的時候具有更高的可靠性。2) 把用戶輸入的信息及時發(fā)送到服務(wù)端,同時準(zhǔn)備好接受,并顯示信息。   ① 構(gòu)造一個 CSocket 對象。 ④通過調(diào)用 CAsyncSocket 對象的封裝 Windows Sockets API 函數(shù)的成員函數(shù),與其他套接字進(jìn)行通信。 (任一個 Create 版本都可以和任一種構(gòu)造方法一起使用。因此這份規(guī)范定義了應(yīng)用程序開發(fā)者能夠使用,并且網(wǎng)絡(luò)軟件供應(yīng)商能夠?qū)崿F(xiàn)的一套庫函數(shù)調(diào)用和相關(guān)語義。網(wǎng)絡(luò)聊天室軟件的制作方法有很多種,比如用 MFC 和 Java 等語言設(shè)計的就有很多,本次課程設(shè)計主要是利用 MFC 所提供的各種控件尤其是 WinSock 控件,基于 C/S 模式,設(shè)計了一個網(wǎng)絡(luò)聊天室,圓滿地實現(xiàn)在網(wǎng)絡(luò)上實時聊天及多種人性化的輔助功能。并能鞏固和擴展之前學(xué)過的知識,進(jìn)行項目的設(shè)計開發(fā)訓(xùn)練,更好的適應(yīng)社會的需求。 // Use the default parameters 或 CAsyncSocket* pSocket = new CAsyncSocket。 ③接受連接后,可以執(zhí)行驗證密碼等任務(wù)。因此如果需要低層控制和高效率,就使用 CasyncSock 類;如果需要方便,則可使用 CSocket 類。 方案比較與選擇 系統(tǒng)分析與設(shè)計系統(tǒng)構(gòu)架方式如下圖所示:設(shè)計出一個完整的網(wǎng)絡(luò)聊天程序,使之實現(xiàn)以上基本要求。UDP 適用于一次只傳送少量數(shù)據(jù)、對可靠性要求不高的應(yīng)用環(huán)境服務(wù)器端也叫接收端,對于基于 UDP(面向無連接)的套接字編程來說,它的服務(wù)器端和客戶端這種概念不是很強化,我們也可以把服務(wù)器端,即先啟12動的一端稱為接收端,發(fā)送數(shù)據(jù)的一端稱為發(fā)送端,也稱為客戶端。下面詳細(xì)介紹各項功能是如何15實現(xiàn)的。 //連接是否關(guān)閉public: void Init(CChatDlg *dlg)。 virtual void OnClose(int nErrorCode)。m_dlgm_tmpMsgList=+\r\n。 m_aSessionIn=new CArchive(m_sfSocketFile,CArchive::load)。 m_sfSocketFile=NULL。}/**GetIpAddress()函數(shù)的實現(xiàn)*主要功能:*取得本地 IP 地址*/int CClientSocket::GetIpAddress(const CString amp。f2,BYTE amp。27 case WSAENETDOWN: result=The work subsystem failed。 case WSAEINVAL: result=Invalid host address。 default: result=unknown error。 return FALSE。32 代碼如下:include include include // Construction/DestructionIMPLEMENT_DYNCREATE(CMessg,CObject)CMessg::CMessg(){ Init()。 //標(biāo)準(zhǔn)構(gòu)造函數(shù) //對話框數(shù)據(jù) enum{IDD=IDD_CHAT_DIAL
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1