一个udpclient在winform实现数据收发
时间: 2024-04-08 07:33:04 浏览: 9
在 WinForms 中实现 UDP 数据收发可以通过创建和使用 `UdpClient` 类来完成。下面是一个简单的示例代码:
```csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;
public partial class MainForm : Form
{
private UdpClient udpClient;
private IPEndPoint remoteEndPoint;
public MainForm()
{
InitializeComponent();
}
private void MainForm_Load(object sender, EventArgs e)
{
// 初始化 UdpClient 和远程端点
udpClient = new UdpClient();
remoteEndPoint = new IPEndPoint(IPAddress.Parse("远程IP地址"), 远程端口号);
}
private void btnSend_Click(object sender, EventArgs e)
{
string message = txtMessage.Text;
// 将消息转换为字节数组
byte[] sendData = Encoding.UTF8.GetBytes(message);
// 发送数据
udpClient.Send(sendData, sendData.Length, remoteEndPoint);
// 清空文本框
txtMessage.Text = "";
}
private void btnReceive_Click(object sender, EventArgs e)
{
// 开始异步接收数据
udpClient.BeginReceive(ReceiveCallback, null);
}
private void ReceiveCallback(IAsyncResult result)
{
// 结束异步接收并获取接收的数据和远程端点
byte[] receivedData = udpClient.EndReceive(result, ref remoteEndPoint);
// 将接收到的字节数组转换为字符串
string receivedMessage = Encoding.UTF8.GetString(receivedData);
// 在 UI 线程更新 UI 控件
Invoke(new Action(() =>
{
// 在文本框中显示接收到的消息
txtReceived.Text = receivedMessage;
}));
// 继续异步接收数据
udpClient.BeginReceive(ReceiveCallback, null);
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
// 关闭 UdpClient
udpClient.Close();
}
}
```
上述代码中,我们创建了一个 `UdpClient` 实例和一个 `IPEndPoint` 实例来表示远程端点。`btnSend_Click` 事件处理程序用于发送文本框中的消息,`btnReceive_Click` 事件处理程序用于开始异步接收数据。`ReceiveCallback` 方法是接收完成时的回调方法,它将接收到的消息显示在文本框中。
确保将 "远程IP地址" 和 "远程端口号" 替换为实际的远程 IP 地址和端口号。
在 `MainForm_Load` 中初始化 `UdpClient` 和远程端点,在 `MainForm_FormClosing` 中关闭 `UdpClient`,以确保在关闭窗体时释放资源。