基於UDP的網路通訊程式

來源:互聯網
上載者:User
我們知道TCP/IP協議是至今發展最為成功的協議之一,也是整個互連網的基礎。它在傳輸層有兩個不同的協議:TCP和UDP,用途都很廣泛,下面我就UDP做一個樣本程式。整個例子有兩個程式組成,一個發送資料,另一個程式接收資料後,完成繪圖工作。   本文程式運行如下:


一、發送程式
  首先建立資料發送程式(Fason)。一共發送四個資料:圓心的X座標、圓心的Y座標、圓半徑R、圓的顏色。它的實現主要如下: void CFasonDlg::OnSend()
{
  UpdateData(TRUE);
  CString m_Getstring;
  
  this->m_Cob.GetLBText(m_Cob.GetCurSel(),m_Getstring);
  if(m_Getstring==_T("Red"))
  yuan1.color=1;
  if(m_Getstring==_T("Green"))
    yuan1.color=2;
  if(m_Getstring==_T("Blue"))
    yuan1.color=3;
  yuan1.x=m_x;
  yuan1.y=m_y;
  yuan1.r=m_r;
  p=&yuan1;
  CDSocket m_hSocket;
  m_hSocket.Create(2330,SOCK_DGRAM);
  m_hSocket.SendTo( p,sizeof(yuan1),3550,"127.0.0.1");//用結構體發送。
  m_x=0;
  m_y=0;
  m_r=0;
  m_hSocket.Close();
  UpdateData(FALSE);
}發送資料時有一個技巧,就是所有資料放在一個結構體中來發送,不用一個一個發送。但是不能在結構體中包含CString等可以變長的資料類型。
  二、接收程式
  下面我們看一下接收資料端的程式(Jieshou)。如下: void CDASocket::OnReceive(int nErrorCode)
{
  char buff[256];
  int ret=0;
  ret=Receive(buff,256);
  if(ret==ERROR)
  {
    TRACE("ERROR!");
  }
  else
  m_pDoc->resscessding(buff);
  class CAsyncSocket::OnReceive(nErrorCode);
}三、資料處理與顯示
我們設計程式時,資料通常在文檔中處理,顯示工作在視圖中完成。當整個程式較小時,這感覺不到有何好處,但整個程式較大時,程式的條理就會較清晰,易讀性好。所以一定要時時養成良好的設計習慣。資料在文檔中處理如下:void CJieshouDoc:resscessding(char* lbuff)
{
  buff=(struct yuan*)lbuff;
  p.x=buff->x;
  p.y=buff->y;
  p.r=buff->r;
  p.color=buff->color;
  UpdateAllViews(NULL);
}在視圖中的顯示如下: void CJieshouView::OnDraw(CDC* pDC)
{
  CJieshouDoc* pDoc = GetDocument();
  ASSERT_VALID(pDoc);
  x=pDoc->p.x;
  y=pDoc->p.y;
  r=pDoc->p.r;
  if(pDoc->p.color==1)
  pDC->SelectObject(new CBrush(RGB(255,0,0)));
  if(pDoc->p.color==2)
    pDC->SelectObject(new CBrush(RGB(0,255,0)));
  if(pDoc->p.color==3)
    pDC->SelectObject(new CBrush(RGB(0,0,255)));
  
   pDC->Ellipse(x-r,y-r,x+r,y+r); 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.