private void btnSendReceive_Click(object sender, EventArgs e) { // 开始接收和发送数据 Thread sendReceiveThread = new Thread(SendReceiveData); sendReceiveThread.Start(); } private void SendReceiveData() { while (true) { // 开始接收数据 byte[] receivedData = udpClient.Receive(ref remoteEndPoint); // 将接收到的字节数组转换为字符串 string receivedMessage = Encoding.UTF8.GetString(receivedData); // 在 UI 线程更新 UI 控件 Invoke(new Action(() => { // 在文本框中显示接收到的消息 txtReceived.Text = receivedMessage; })); // 获取要发送的消息 string message = txtMessage.Text; // 将消息转换为字节数组 byte[] sendData = Encoding.UTF8.GetBytes(message); // 发送数据 udpClient.Send(sendData, sendData.Length, remoteEndPoint); // 清空文本框 Invoke(new Action(() => { txtMessage.Text = ""; })); } }
时间: 2024-02-14 22:32:01 浏览: 65
浅析C# 中object sender与EventArgs e
这段代码是一个简单的网络通信程序,使用UDP协议发送和接收数据。当点击按钮btnSendReceive时,会创建一个新的线程sendReceiveThread,并调用SendReceiveData方法来发送和接收数据。
在SendReceiveData方法中,首先通过udpClient.Receive方法接收数据,并将接收到的字节数组转换为字符串。然后使用Invoke方法在UI线程更新UI控件,将接收到的消息显示在txtReceived文本框中。
接着,获取要发送的消息并将其转换为字节数组。使用udpClient.Send方法发送数据到指定的远程端点。
最后,使用Invoke方法在UI线程清空txtMessage文本框。
这段代码实现了简单的UDP数据传输功能,但需要注意的是,由于是在一个循环中进行发送和接收操作,需要在合适的时机结束循环,否则可能会导致程序无法退出或出现其他问题。
阅读全文