您的位置:首页 > 编程语言 > C#

c#中UDP数据发送和接收

2008-01-24 09:06 681 查看



/**//**********************


* 功能:UDP数据发送和接收


* 作者:云涛


* 时间:20070820


* 地点:北京


**********************/






命名空间



using System;


using System.Collections.Generic;


using System.Text;


using System.Net;


using System.Net.Sockets;


using System.Threading;


using System.ComponentModel;





namespace IM.Controls




...{




public class ClsUDPSrv




...{




public ClsUDPSrv()




...{


IsDispose = false;


}




public UdpClient UDP_Srv = new UdpClient();


public static int UDPServer_Port = 2007;


privateint UDPClient_Port;


private Thread td_Udp;


private IPEndPoint IPEP_Srv = new IPEndPoint(IPAddress.Any, 0);


public delegate void DataControlEventHandler(byte[] Data, System.Net.IPAddress Ip, int Port);


public event DataControlEventHandler DataControl;


public delegate void Udp_ErrorEventHandler(string Error);


public event Udp_ErrorEventHandler Udp_Error;


public bool IsDispose = false;




public void Listen(int Port)




...{


try




...{


IsDispose = false;


UDPClient_Port = Port;


UDP_Srv = new UdpClient(Port);


td_Udp = new Thread(new ThreadStart(UDPDataControl));


td_Udp.IsBackground = true;


td_Udp.Start();


}


catch (Exception ex)




...{


if (Udp_Error != null)


Udp_Error(ex.ToString());


}


}




private void ReceiveDataControl()




...{


while (!IsDispose)




...{


try




...{


byte[] Data = UDP_Srv.Receive(ref IPEP_Srv);


if (DataControl != null)


DataControl(Data, IPEP_Srv.Address, IPEP_Srv.Port);


Thread.Sleep(0);


}


catch (Exception ex)




...{


if (Udp_Error != null)


Udp_Error(ex.ToString());


}


}


}




public void SendData(System.Net.IPAddress Host, int Port, byte[] Data)




...{


try




...{


IPEndPoint server = new IPEndPoint(Host, Port);


UDP_Srv.Send(Data, Data.Length, server);




}


catch (Exception ex)




...{


if (Udp_Error != null)


Udp_Error(ex.ToString());


}


}








public void Dispose()




...{


Thread.Sleep(30);


try




...{


IsDispose = true;


UDP_Srv.Close();


td_Udp.Abort();


}


catch (Exception ex)




...{


if (Udp_Error != null)


Udp_Error(ex.ToString());


}


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: