UDP接收数据
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace Switcher
{
class UDPReceive
{
/// <summary>
/// 服务器端
/// </summary>
/// <param name="port"></param>
public void Server(int port)
{
try
{
UdpClient udpclient = new UdpClient(port);
while (true)
{
IPEndPoint ipendpoint = null;
byte[] bytes = udpclient.Receive(ref ipendpoint); //停在这等待数据
string data = Encoding.Default.GetString(bytes, 0, bytes.Length);
Console.WriteLine("{0:HH:mm:ss}->接收数据(from {1}:{2}):{3}", DateTime.Now, ipendpoint.Address, ipendpoint.Port, data);
}
udpclient.Close();
}
catch (Exception ex)
{
Console.WriteLine("{0:HH:mm:ss}->{1}", DateTime.Now, ex.Message);
}
Console.ReadKey();
}
}
}
UDP 使用线程接收数据
using System;
using System.Net.Sockets;
using System.Net;
using System.Text;
using System.Threading;
namespace Switcher
{
class UDPThread
{
UdpClient udpClient;
Thread UdpThread;
public void StartServer(int port)
{
if (udpClient != null)
{
UdpThread.Abort();
Thread.Sleep(TimeSpan.FromMilliseconds(500d));
udpClient.Close();
}
try
{
udpClient = new UdpClient(port);
UdpThread = new Thread(new ThreadStart(UdpReciveThread));
UdpThread.Start();
//buttonStartServer.Enabled = false;
}
catch (Exception y)
{
Console.WriteLine("1::{0:HH:mm:ss}->{1}", DateTime.Now, y.Message);
}
}
void UdpReciveThread()
{
while (udpClient != null && Thread.CurrentThread.ThreadState == ThreadState.Running)
{
try
{
IPEndPoint ipendpoint = null;
byte[] bytes = udpClient.Receive(ref ipendpoint); //停在这等待数据
string data = Encoding.Default.GetString(bytes, 0, bytes.Length);
Console.WriteLine("{0:HH:mm:ss}->接收数据(from {1}:{2}):{3}", DateTime.Now, ipendpoint.Address, ipendpoint.Port, data);
}
catch (Exception y)
{
Console.WriteLine("{0:HH:mm:ss}->{1}", DateTime.Now, y.Message);
}
}
}
}
}