示例#1
0
        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;
        }
示例#2
0
        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);
        }