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

UDP數據傳輸實例(1)

編輯:關於C語言

下面通過一個例子,對UdpClIEnt類的用法及它的一些方法進行說明。在UDP模式下,不存在明顯的服務器與客戶端之分,所以在這裡用A端和B端代替。本例要實現的功能是從A端到B端的點對點通信。打開VS2008,在D:C#ch17目錄下建立名為P2PTest的Windows應用程序。打開工程,為當前窗體添加如表17-9所示控件。

表17-9 添加控件列表

控件名 Name Text Label Label1 對方IP: TextBox tbIP TextBox tbMsg Button btnSend 發送 ListBox lbInfo GroupBox gbSend 發送窗口 GroupBox gbReceive 接收窗口 Button btnClear 清空

本例是利用8888端口進行局域網內部的點對點通信,只要確認對方IP,就能相互發送信息。代碼的添加主要分為以下步驟。

(1)首先是對幾個命名空間的引用,包括System.Net、System.Net.Sockets和System.Threading。然後定義如下三個全局變量。

private UdpClIEnt uc;

private IPEndPoint IEp;

private Thread th;

其中UdpClIEnt是本例的核心成員,主要通過它的相關方法進行數據的收發。

(2)本例使用8888端口進行通信,所以應該在當前窗體構造函數Form1()內,用該端口實例化UdpClIEnt。

public Form1()

    {

      InitializeComponent();

CheckForIllegalCrossThreadCalls = false;

      uc = new UdpClIEnt(8888);

    }

CheckForIllegalCrossThreadCalls主要是解決線程間的控件操作問題,通過將其屬性設置為fasle,可以禁用對操作控件的線程是否為創建該窗體的線程的檢測,阻止該異常的發生。這種問題在第16章中也遇到過,當時是采用的委托的方法進行解決。

(3)雙擊“發送”按鈕,添加如下代碼。

IEp = new IPEndPoint(IPAddress.Parse(tbIP.Text), 8888);

th = new Thread(new ThreadStart(listen));

th.IsBackground = true; //設置在後台運行

th.Start(); //啟動線程

string temp = tbMsg.Text;

byte[] b = Encoding.UTF8.GetBytes(temp); //對發送的數據的進行UTF8格式的編碼

uc.Send(b, b.Length,IEp); //發送數據

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