Пример #1
0
        private async void Enter(object sender, RoutedEventArgs e)
        {
            try
            {
                _client = new UdpClient(UdpHelper.GetFreePort());
                _client.JoinMulticastGroup(IPAddress.Parse(ConectInfo.GroupAddr));
                _isConnected = _isSendMessage = true;
                Task.Run(ReceiveData).Start();
            }
            catch
            {
            }

            _userName = TextBoxUsername.Text;
            SendMessage(_userName + " joined.");

            GridMain.Visibility     = Visibility.Visible;
            GridRegister.Visibility = Visibility.Hidden;
            GridChat.Visibility     = Visibility.Visible;

            for (var i = 0; i <= 150; i += 5)
            {
                GridChat.Width = i;
                await Task.Delay(20);
            }
        }
    public void Start(int port)
    {
        Debug.Log($"Starting UDP server on port {port}");
        var udpHelper = new UdpHelper();

        udpHelper.client   = new UdpClient(port);
        udpHelper.endPoint = new IPEndPoint(IPAddress.Any, port);
        udpHelper.client.BeginReceive(UdpReceived, udpHelper);
    }
 /// <summary>
 /// 页面加载时的业务处理
 /// </summary>
 protected override void OnHandleViewLoaded()
 {
     //读取配置文件
     ReadConfig();
     if (!string.IsNullOrWhiteSpace(ipAddress) && !string.IsNullOrWhiteSpace(port))
     {
         //初始化udp
         socketHelper = new UdpHelper(ipAddress, int.Parse(port));
     }
 }
Пример #4
0
        private void Window_MouseDown(object sender, MouseButtonEventArgs e)
        {
            var pt = e.GetPosition(img);
            var x  = (pt.X / img.ActualWidth);
            var y  = (pt.Y / img.ActualHeight);

            var bytes = ConcatByteArrays(
                BitConverter.GetBytes(m_port),
                BitConverter.GetBytes(x),
                BitConverter.GetBytes(y));

            UdpHelper.Send("192.168.0.2", 7777, bytes);
        }
Пример #5
0
        private void Canvas_MouseMove(object sender, MouseEventArgs e)
        {
            LabelX.Content = "X = " + e.GetPosition(CanvasMain).X;
            LabelY.Content = "Y = " + e.GetPosition(CanvasMain).Y;
            var point = e.GetPosition(CanvasMain);

            if (_isDraw && !_isMove && (e.LeftButton == MouseButtonState.Pressed))
            {
                _x2 = point.X;
                _y2 = point.Y;
                ChangingObjects();

                PrintFigure(_figures[_tag]);
                if (_isConnected)
                {
                    UdpHelper.SendFigure(Command.Point, _figures[_tag], _client, _isOneFigure);
                }

                _figures.Clear();
            }
            else if (_isMove && e.LeftButton == MouseButtonState.Pressed)
            {
                _figure.FirstPoint.X  = _oldPointFirst.X + (point.X - _x1);
                _figure.SecondPoint.X = _oldPointSecond.X + (point.X - _x1);
                _figure.FirstPoint.Y  = _oldPointFirst.Y + (point.Y - _y1);
                _figure.SecondPoint.Y = _oldPointSecond.Y + (point.Y - _y1);

                if (_isConnected)
                {
                    UdpHelper.SendFigure(Command.Move, _figure, _client, _isOneFigure);
                }

                if (_isOneFigure)
                {
                    CanvasMain.Children.Remove(_chousenShape);
                }
                else
                {
                    CanvasMain.Children.RemoveAt(CanvasMain.Children.Count - 1);
                }

                _isOneFigure = false;
                _figure.SetColor();
                _figure.Draw(CanvasMain);
                _figure.Tag = CanvasMain.Children.IndexOf(CanvasMain.Children[CanvasMain.Children.Count - 1]);
                _shape.Figures.Add(_figure);
                SetEventOnLastFigure();
            }
        }
Пример #6
0
        private void InitObject()
        {
            _config               = Config.Instance();
            _udpHelper            = new UdpHelper();
            _deviceControlElement = DeviceControlElement.GetInstance();
            _deviceControlElement.AddJoystick(_config.Default.DefaultControlElement.Rus.Guid);
            _deviceControlElement.AddJoystick(_config.Default.DefaultControlElement.Rud.Guid);
            _dynamicModelToBmpi     = new DynamicModelToBmpi();
            _aircraftPosition       = new AircraftPosition();
            _dynamicModelToVaps     = new DynamicModelToVaps();
            _modelState             = new ModelState();
            _channelRadar           = new ChannelRadar();
            _channelThermalEffect   = new ChannelThermalEffect();
            _channelTvHeadEffect    = new ChannelTvHeadEffect();
            _ethernetControlElement = new EthernetControlElement();
            _cLSEControl            = new CLSEControl();
            _cLSEState           = new CLSEState();
            _parametersOfControl = new ParametersOfControl();
            _lptp       = new Lptp();
            _commandPue = new CommandPue();

            if (_typeModel == 0)
            {
                _controlElement = new ControlElementKa52();
                _dynamicModel   = new ModelKa52();
            }
            _startPosition = new StartPosition();
            _landing       = new Landing();
            _route         = new Route();

            uint   version       = 0;
            uint   release       = 0;
            uint   releaseDay    = 0;
            uint   releaseMonth  = 0;
            uint   releaseYear   = 0;
            IntPtr pversion      = GetIntPtr(version);
            IntPtr prelease      = GetIntPtr(release);
            IntPtr preleaseDay   = GetIntPtr(releaseDay);
            IntPtr preleaseMonth = GetIntPtr(releaseMonth);
            IntPtr preleaseYear  = GetIntPtr(releaseYear);

            GetDllVersion(pversion, prelease, preleaseDay, preleaseMonth, preleaseYear);
            version      = (uint)Marshal.ReadInt32(pversion);
            release      = (uint)Marshal.ReadInt32(prelease);
            releaseDay   = (uint)Marshal.ReadInt32(preleaseDay);
            releaseMonth = (uint)Marshal.ReadInt32(preleaseMonth);
            releaseYear  = (uint)Marshal.ReadInt32(preleaseYear);
            Init("ConfigBrunner.xml");
        }
Пример #7
0
        private void OnUdpReceived(byte[] buffer, int size)
        {
            lock (this) {
                if (CurrentState == State.Disconnected)
                {
                    return;
                }

                _receiveBuffer.SetContents(_crypto.Decrypt(buffer, 0, size));
                if (UdpHelper.PrefixCheck(_receiveBuffer, out ushort packetTimestamp))
                {
                    _handler.OnUdpReceived(_receiveBuffer, packetTimestamp);
                }
            }
        }
Пример #8
0
        /// <summary>
        /// Sends the specified payload over UDP.
        /// </summary>
        /// <param name="payloadWriter">The action which writes the payload to a buffer.</param>
        public void SendUdp(Action <BitBuffer> payloadWriter)
        {
            lock (this) {
                if (CurrentState == State.Disconnected)
                {
                    return;
                }

                using (_sendBuffer) {
                    UdpHelper.WritePrefix(_sendBuffer, ConnectionStartTimestamp, payloadWriter);
                    byte[] encrypted = _crypto.Encrypt(_sendBuffer.Array, 0, _sendBuffer.Size);
                    _udp.Send(encrypted, 0, encrypted.Length);
                }
            }
        }
Пример #9
0
        /// <summary>
        /// Sends the specified payload over UDP to the specified client.
        /// </summary>
        /// <param name="recipient">The client in question.</param>
        /// <param name="payloadWriter">The action which writes the payload to a buffer.</param>
        public void SendUdp(IDoubleServerClient recipient, Action <BitBuffer> payloadWriter)
        {
            lock (this) {
                if (_closed)
                {
                    return;
                }

                DoubleServerClient client = (DoubleServerClient)recipient;
                using (_sendBuffer) {
                    UdpHelper.WritePrefix(_sendBuffer, client.ConnectionStartTimestamp, payloadWriter);
                    byte[] encrypted = _crypto.Encrypt(client.EncryptionKey, _sendBuffer.Array, 0, _sendBuffer.Size);
                    _udp.Send(client.UdpEndPoint, encrypted, 0, encrypted.Length);
                }
            }
        }
Пример #10
0
        private void Canvas_MouseDown(object sender, MouseEventArgs e)
        {
            var point = e.GetPosition(CanvasMain);

            _x1          = point.X;
            _y1          = point.Y;
            _isDraw      = true;
            _isOneFigure = _isMove;
            if (_isConnected)
            {
                if (!_isMove)
                {
                    UdpHelper.SendFigure(Command.BeginPaint, new Line(), _client, _isOneFigure);
                }
            }
        }
Пример #11
0
        public Bitmap RenderToRemote(Bitmap desktop, System.Windows.Forms.Screen screen)
        {
            render_counter++;

            var cropped = Window.RenderFromDesktop(desktop, screen);

            if (cropped == null)
            {
                return(null);
            }

            byte[] imageBytes = ImageExtensions.ToByteArray(cropped, Quality);

            if (render_counter % 100 == 0)
            {
                while ((imageBytes.Length < (0.98 * max_size)) && (Quality < 100))
                {
                    Quality += 2;
                    if (Quality > 100)
                    {
                        Quality = 100;
                    }
                    imageBytes = ImageExtensions.ToByteArray(cropped, Quality);
                    // Trace.WriteLine("Qutlity 1");

                    break;
                }
            }

            while (imageBytes.Length > max_size)
            {
                Quality -= 1;
                if (Quality < 1)
                {
                    Quality = 1;
                    break;
                }

                imageBytes = ImageExtensions.ToByteArray(cropped, Quality);
                //  Trace.WriteLine("Qutlity 2");
            }

            UdpHelper.Send(m_address, m_port, imageBytes);
            return(cropped);
        }
Пример #12
0
        private void OnReceived(object sender, SocketAsyncEventArgs eventArgs)
        {
            while (true)
            {
                if (UdpHelper.IsHarmfulError(eventArgs.SocketError))
                {
                    return;
                }

                _receiveHandler(eventArgs.Buffer, eventArgs.BytesTransferred);
                lock (_socket) {
                    if (_disposed)
                    {
                        return;
                    }
                    else if (_socket.ReceiveAsync(eventArgs))
                    {
                        break;
                    }
                }
            }
        }
Пример #13
0
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            using UdpClient listener = new UdpClient(_listenerConfig.Port);
            UdpHelper.ConfigureSocket(listener);

            _logger.LogInformation($"Listening on {_listenerConfig.Port}");

            while (!stoppingToken.IsCancellationRequested)
            {
                try
                {
                    _logger.LogInformation("Waiting for broadcast");

                    var receiveResult = await listener.ReceiveAsync();

                    IPEndPoint remoteEP = receiveResult.RemoteEndPoint;
                    byte[]     bytes    = receiveResult.Buffer;

                    _logger.LogInformation($"Received payload from {remoteEP}");

                    var command = TryGetCommand(bytes);
                    if (command == null)
                    {
                        await Reply(listener, remoteEP, "Cannot read payload");
                    }
                    else
                    {
                        var response = _commandExecutorService.ExecuteCommand(command);
                        await Reply(listener, remoteEP, response);
                    }
                }
                catch (SocketException e)
                {
                    _logger.LogError(e, "socket error");
                    throw e;
                }
            }
        }
Пример #14
0
        private void OnReceived(object sender, SocketAsyncEventArgs eventArgs)
        {
            while (true)
            {
                if (UdpHelper.IsHarmfulError(eventArgs.SocketError))
                {
                    return;
                }

                _receiveHandler(eventArgs.RemoteEndPoint, eventArgs.Buffer, eventArgs.BytesTransferred);
                lock (_socket) {
                    if (_disposed)
                    {
                        return;
                    }
                    eventArgs.RemoteEndPoint = new IPEndPoint(IPAddress.IPv6Any, _port);
                    if (_socket.ReceiveFromAsync(eventArgs))
                    {
                        break;
                    }
                }
            }
        }
Пример #15
0
 static void SendMessage(string message)
 {
     UdpHelper.SendMessage(_client, message);
 }