codefans

          導(dǎo)航

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統(tǒng)計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          程序設(shè)計鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          用VC++制作一個簡單的局域網(wǎng)消息發(fā)送工程

          本工程類似于oicq的消息發(fā)送機制,不過他只能夠發(fā)送簡單的字符串。雖然簡單,但他也是一個很好的VC網(wǎng)絡(luò)學(xué)習(xí)例子。

            本例通過VC帶的SOCKET類,重載了他的一個接受類mysock類,此類可以吧接收到的信息顯示在客戶區(qū)理。以下是實現(xiàn)過程:

            建立一個MFC 單文檔工程,工程名為oicq,在第四步選取WINDOWS SOCKetS支持,其它取默認(rèn)設(shè)置即可。為了簡單,這里直接把about對話框作些改變,作為發(fā)送信息界面。

            這里通過失去對話框來得到發(fā)送的字符串、獲得焦點時把字符串發(fā)送出去。創(chuàng)建oicq類的窗口,獲得VIEW類指針,進而可以把接收到的信息顯示出來。

          extern CString bb;
          void CAboutDlg::OnKillFocus(CWnd* pNewWnd)
          {
           // TODO: Add your message handler code here
           CDialog::OnKillFocus(pNewWnd);
           bb=m_edit;
          }
          對于OICQVIEW類
          char aa[100];
          CString mm;
          CDC* pdc;
          class mysock:public CSocket //派生mysock類,此類既有接受功能
          {public:void OnReceive(int nErrorCode) //可以隨時接收信息
           {
            CSocket::Receive((void*)aa,100,0);
            mm=aa;
            CString ll=" ";//在顯示消息之前,消除前面發(fā)送的消息
            pdc->TextOut(50,50,ll);
            pdc->TextOut(50,50,mm);
           }
          };

          mysock sock1;
          CString bb;
          BOOL COicqView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
          {
           CView::OnSetFocus(pOldWnd);

           // TODO: Add your message handler code here and/or call default
           bb="besting:"+bb; //確定發(fā)送者身份為besting
           sock1.SendTo(bb,100,1060,"192.168.0.255",0); //獲得焦點以廣播形式發(fā)送信息,端口號為1060

           return CView::OnSetCursor(pWnd, nHitTest, message);
          }

          int COicqView::OnCreate(LPCREATESTRUCT lpCreateStruct)
          {
           if (CView::OnCreate(lpCreateStruct) == -1)
            return -1;
            sock1.Create(1060,SOCK_DGRAM,NULL);//以數(shù)據(jù)報形式發(fā)送消息

            static CClientDC wdc(this); //獲得當(dāng)前視類的指針
            pdc=&wdc;
            // TODO: Add your specialized creation code here

            return 0;
          }

          運行一下,打開ABOUT對話框,輸入發(fā)送信息,enter鍵就可以發(fā)送信息了,是不是有點像qq啊?

          posted on 2005-08-20 02:07 春雷的博客 閱讀(149) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 宁国市| 安国市| 马鞍山市| 沧源| 邹城市| 古浪县| 尼玛县| 衡南县| 洛阳市| 阿坝| 光山县| 吉木乃县| 五莲县| 涟源市| 玉屏| 博乐市| 乐平市| 枣庄市| 仁寿县| 德昌县| 云南省| 郎溪县| 舒城县| 西青区| 大港区| 泾阳县| 电白县| 锦州市| 焉耆| 宁津县| 富阳市| 塘沽区| 盐源县| 砀山县| 淳化县| 龙江县| 腾冲县| 闸北区| 奉节县| 陆良县| 镇坪县|