龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

用VC++制作一个简单的局域网消息发送工程[组图]

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
本工程类似于oicq的消息发送机制,不过他只能够发送简单的字符串。虽然简单,但他也是一个很好的VC网络学习例子。 本例通过VC带的SOCKET类,重载了他的一个接受类mysock类,此类可以

  本工程类似于oicq的消息发送机制,不过他只能够发送简单的字符串。虽然简单,但他也是一个很好的VC网络学习例子。
  
     本例通过VC带的SOCKET类,重载了他的一个接受类mysock类,此类可以吧接收到的信息显示在客户区理。以下是实现过程:
  
   <!-- frame contents -->
<!-- /frame contents -->   建立一个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啊? 更多内容请看家庭无线局域网  局域网  局域网专题,或
  
精彩图集

赞助商链接