程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> UDP數據傳輸實例(2)

UDP數據傳輸實例(2)

編輯:關於C語言

其中listen()方法用於監聽對方發送過來的消息,實現代碼如下。

private void listen()

{

  while (true)

  {

    string text = Encoding.UTF8.GetString(uc.Receive(ref IEp)); //對發送的數據的進行UTF8格式的編碼

    lbInfo.Items.Add(text + "n");

  }

}

(4)雙擊“清空”按鈕,添加如下代碼。

lbInfo.Items.Clear();

(5)最後還需要進行一些資源釋放的操作。

protected override void Dispose(bool disposing)

{

  if (disposing && (components != null))

  {

    components.Dispose();

    th.Abort(); //關閉線程

    uc.Close(); //關閉UdpClIEnt

  }

  base.Dispose(disposing);

}

完成以上操作後,將該軟件放在兩台計算機之間進行測試。

在測試過程中,發送的數據有時不能被對方收到。這是UDP本身的特性造成的,因為UDP是不可靠的傳輸協議,這也是基於UDP通信的缺點之一。

在上面的例子中,收發數據用到了UdpClIEnt類的幾種方法,如Send()和Receive(),下面對這些方法進行詳細說明。

首先看發送數據用到的Send()方法,它具有以下重載形式。

public int Send(byte[] dgram,int bytes);

public int Send(byte[] dgram,int bytes,string hostname,int port);

public int Send(byte[] dgram,int bytes);

其中,dgram表示需要發送的數據,它必須滿足字節數組的格式;bytes表示該字節數組的長度;hostname和port指需要接收數據的主機名和端口號。

接著是接收數據用到的Receive()方法,它沒有重載形式,聲明如下。

public byte[] Receive(ref IPEndPoint remoteEP);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved