private void onUdpRecv() { btnStartUDPServ.ImageIndex = 1; cbUdpClientPort.Enabled = false; toolTip1.SetToolTip(btnStartUDPServ, "关闭接收"); UDPAddr ua = getCurrentIPAndPort(); if (udpClient == null) // { IPEndPoint localIpep = new IPEndPoint(IPAddress.Parse("0.0.0.0"), ua.port); udpClient = new UdpClient(localIpep); } IPEndPoint remotePoint = new IPEndPoint(IPAddress.Any, 0); while (true) { try { byte[] data = udpClient.Receive(ref remotePoint); parsePack(data, data.Length); } catch (Exception e) { showRedTip(e.Message); break; } } recvThreadRunning = false; if (closeFlag) { return; } btnStartUDPServ.ImageIndex = 0; cbUdpClientPort.Enabled = true; toolTip1.SetToolTip(btnStartUDPServ, "启动接收"); udpClient = null; }
private bool sendUDPData(byte[] data, int offset, int length) { if (length > 8192) { showRedTip("UDP 最大包长度不能超过 8192"); return(false); } UDPAddr ua = getCurrentIPAndPort(); IPEndPoint ipep = new IPEndPoint(ua.ip, ua.port); if (udpClient == null) { udpClient = new UdpClient(); } try { udpClient.Send(data, length, ipep); } catch (Exception e) { showRedTip(e.Message); return(false); } return(true); }