摘要
在.NET框架中,UDP通信是通过System.Net.Sockets
命名空间下的UdpClient
类实现的。以下是关于如何在WinForms应用程序中使用UDP通信的一些基本概念,常用属性和方法,以及一些示例。
正文
UdpClient类
UdpClient
类提供了发送和接收UDP数据报的方法。它是无连接的,即发送和接收数据报不需要建立和关闭连接。
常用的属性有:
-
Available
:获取要读取的可用数据的数量(以字节为单位)。 -
Client
:获取或设置底层网络套接字。 -
ExclusiveAddressUse
:获取或设置一个布尔值,该值指定是否允许只有一个套接字绑定到特定端口。
常用的方法有:
-
Close
:关闭UDP连接并释放所有相关资源。 -
Connect
:连接到远程主机。 -
Receive
:接收一个UDP数据报。 -
Send
:发送一个UDP数据报。
一个例子
public partial class Form1 : Form
{
private UdpClient udpClient;
public Form1()
{
InitializeComponent();
udpClient = new UdpClient();
}
/// <summary>
/// 发送
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSend_Click(object sender, EventArgs e)
{
byte[] bytes = Encoding.ASCII.GetBytes(txtSend.Text);
udpClient.Send(bytes, bytes.Length, "127.0.0.1", 3001);
}
/// <summary>
/// 接收
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnReceive_Click(object sender, EventArgs e)
{
Task.Run(() =>
{
while (true)
{
string value = Receive();
this.Invoke(() =>
{
txtReceive.AppendText(value);
txtReceive.AppendText(System.Environment.NewLine);
});
}
});
}
public string Receive()
{
IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
byte[] bytes = udpClient.Receive(ref remoteEndPoint);
return Encoding.ASCII.GetString(bytes);
}
}