codefans

          導航

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

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          程序設計鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          用VC++制作一個簡單的局域網消息發送工程

          本工程類似于oicq的消息發送機制,不過他只能夠發送簡單的字符串。雖然簡單,但他也是一個很好的VC網絡學習例子。

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

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

            這里通過失去對話框來得到發送的字符串、獲得焦點時把字符串發送出去。創建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=" ";//在顯示消息之前,消除前面發送的消息
            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; //確定發送者身份為besting
           sock1.SendTo(bb,100,1060,"192.168.0.255",0); //獲得焦點以廣播形式發送信息,端口號為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);//以數據報形式發送消息

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

            return 0;
          }

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

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


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


          網站導航:
           
          主站蜘蛛池模板: 澄迈县| 呼图壁县| 信宜市| 罗城| 汾西县| 临武县| 巴楚县| 嘉祥县| 得荣县| 北票市| 青田县| 济源市| 静宁县| 临猗县| 双辽市| 永修县| 峨眉山市| 扶绥县| 延长县| 庆阳市| 兴仁县| 饶平县| 永兴县| 通州市| 化隆| 荔浦县| 双鸭山市| 繁峙县| 孟州市| 金湖县| 正安县| 黎城县| 江津市| 郎溪县| 台北县| 彰武县| 布拖县| 皮山县| 西乌珠穆沁旗| 南皮县| 永吉县|