歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C#下socket編程:udp協議測試

軟件平台:C# + WINCE6.0

硬件平台:tiny6410

界面設計:


設計思路:

1.點擊發送鍵則發送文本

2.開辟一個線程接收網絡數據

注意:

開辟的線程調用主線程的控件會導致不安全,所以用了托管的方式調用


源代碼:

[csharp]

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Text;  
  7. using System.Windows.Forms;  
  8. using System.Net;  
  9. using System.Net.Sockets;  
  10. using System.Threading;  
  11.   
  12. namespace test_udp  
  13. {  
  14.     public partial class Form1 : Form  
  15.     {  
  16.         UdpClient udpclient;  
  17.         Byte[] sendBytes;  
  18.         IPEndPoint temp;  
  19.         public Form1()  
  20.         {  
  21.             InitializeComponent();  
  22.         }  
  23.   
  24.         //發送按鍵   
  25.         private void button1_Click(object sender, EventArgs e)  
  26.         {  
  27.             //定義一個字節數組,用來存放發送到遠程主機的信息   
  28.             sendBytes = Encoding.Default.GetBytes(textBox3.Text);  
  29.             //調用send方法發送到遠程主機   
  30.             udpclient.Send(sendBytes, sendBytes.Length);  
  31.         }  
  32.   
  33.         //確認配置   
  34.         private void button2_Click(object sender, EventArgs e)  
  35.         {  
  36.             //實例化udpclient對象   
  37.             udpclient = new UdpClient(Convert.ToInt32(textBox2.Text));  
  38.             //調用connect建立默認遠程主機   
  39.             udpclient.Connect(textBox1.Text, Convert.ToInt32(textBox2.Text));  
  40.             //實例化ipendpoint對象,用來顯示響應主機的標識   
  41.             temp = new IPEndPoint(IPAddress.Any,0);  
  42.             //開啟接收線程   
  43.             Thread recv_udp = new Thread(new ThreadStart(recv_udp_func));  
  44.             recv_udp.Start();  
  45.         }  
  46.   
  47.         //接收線程   
  48.         public void recv_udp_func()  
  49.         {  
  50.             while (true)  
  51.             {  
  52.                 //接收數據包   
  53.                 Byte[] recv_bytes = udpclient.Receive(ref temp);  
  54.                 //將得到的數據包轉換為字符串形式   
  55.                 string return_data = Encoding.Default.GetString(recv_bytes,0,recv_bytes.Length);  
  56.                 //顯示   
  57.                 this.Invoke((EventHandler)delegate { this.textBox4.Text = return_data; });  
  58.             }  
  59.         }  
  60.     }  
  61. }  
Copyright © Linux教程網 All Rights Reserved