其中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);