Exemplo n.º 1
0
        private void ReceiveCallback(IAsyncResult ar)
        {
            UdpState us = (UdpState)(ar.AsyncState);

            _logger.LogDebug("Start receive data. AuthId: {0} Server port {1}",
                             _options.AuthId, _options.Port);

            string receiveString;

            try
            {
                byte[] receiveBytes = us.client.EndReceive(ar, ref us.remoteEp);

                _logger.LogDebug("Received data. AuthId: {0} Server port {1} Host ip: {2} Host port {3}",
                                 _options.AuthId, _options.Port, us.remoteEp.Address.ToString(), us.remoteEp.Port);

                receiveString = Encoding.ASCII.GetString(receiveBytes);
            }
            catch (Exception e)
            {
                _logger.LogWarning("Data receive error. AuthId: {0} Server port {1} Sender host: {2} Sender port: {3} Error message: {4}",
                                   _options.AuthId, _options.Port, us.remoteEp.Address.ToString(), us.remoteEp.Port, e.Message);
                messageReceived = true;
                return;
            }

            _logger.LogDebug("End receive data. AuthId: {0} Server port {1} Sender host: {2} Sender port: {3} Data: {4}",
                             _options.AuthId, _options.Port, us.remoteEp.Address.ToString(), us.remoteEp.Port, receiveString);

            ExtractData(receiveString, us.remoteEp.Address.ToString(), us.remoteEp.Port);

            messageReceived = true;
        }
Exemplo n.º 2
0
        private void ReceiveMessages(CancellationToken cancellationToken)
        {
            // Receive a message
            IPEndPoint LocalEp   = new IPEndPoint(IPAddress.Any, _options.Port);
            IPEndPoint RemoteEp  = new IPEndPoint(IPAddress.Any, 0);
            UdpClient  udpClient = new UdpClient(LocalEp);

            UdpState s = new UdpState
            {
                localEp  = LocalEp,
                remoteEp = RemoteEp,
                client   = udpClient
            };



            while (true)
            {
                s.client.BeginReceive(new AsyncCallback(ReceiveCallback), s);

                // Do some work while we wait for a message. For this example, we'll just sleep
                while (!messageReceived && !cancellationToken.IsCancellationRequested)
                {
                    Thread.Sleep(100);
                }

                messageReceived = false;

                if (cancellationToken.IsCancellationRequested)
                {
                    _logger.LogDebug("Server cancellation request. AuthId: {0} Listening port: {1}", _options.AuthId, _options.Port);
                    break;
                }
            }
        }