Подключение к розетке на NanoFramework

У меня возникла проблема, когда я не могу подключиться по Telnet к своему Nucleo-F746ZG, используя следующий код:

Я вижу, что DHCP назначает действительный IP-адрес, что означает, что плата может видеть сеть (и маршрутизатор), но когда я использую клиент Telnet для подключения. Код никогда не покидает слушателя. Тот же код отлично работает в Windows под.NET Framework.

        private void ConnectionListenerThread()
    {
        byte [] buff = new byte[ 1024 ];
        int received;

        //
        // Grab a collection of available network interfaces.
        //
        NetworkInterface[] nis = NetworkInterface.GetAllNetworkInterfaces();

        //
        // We need at least one interface to continue.
        //
        if ( nis.Length > 0 )
        {
            NetworkInterface ni = nis[0];
            ni.EnableDhcp();

            //
            // Wait to be assigned an IP address.
            //
            while ( ni.IPv4Address == null || ni.IPv4Address.Length == 0 || ni.IPv4Address.Equals( "0.0.0.0" ) )
            {
                Thread.Sleep( 100 );
            }

            Debug.WriteLine( $"DHCP has given us the address {ni.IPv4Address},{ni.IPv4SubnetMask},{ni.IPv4GatewayAddress}" );

            while ( true )
            {
                _clientSocket = null;

                //
                // We now have an IP address allocated so we can await
                // incoming client connections.
                //
                IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, ListeningPort);
                Socket listener = new Socket( localEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp );

                try
                {
                    listener.Bind( localEndPoint );
                    listener.Listen( 100 );

                    Debug.WriteLine( $"Waiting for an incoming connection on port {ListeningPort}.." );
                    _clientSocket = listener.Accept();
                    Debug.WriteLine( "Connected to a client" );

                    while ( true )
                    {
                        received = _clientSocket.Receive( buff );
                        if ( received > 0 )
                        {
                            OnSerialDataReceived?.Invoke( this, new EventArguments.BytesReceivedEventArgs( buff, received ) );
                        }
                    }
                }
                catch ( Exception ex )
                {
                    Debug.WriteLine( $"Got a network exception: {ex.Message}" );
                }
            }
        }
    }

ListeningPort обычно имеет значение 54321.

Вот системная информация, которая показывает установленную версию NanoFramework.

System Information
HAL build info: nanoCLR running @ ST_NUCLEO144_F746ZG
  Target:   ST_NUCLEO144_F746ZG
  Platform: STM32F7

Firmware build Info:
  Date:     Jul 13 2020
  Type:     MinSizeRel build with ChibiOS v19.1.4.1
  Version:  1.4.590.0
  Compiler: GNU ARM GCC v9.3.1

Есть ли у кого-нибудь предложения по поводу того, что я делаю не так?

Энди

1 ответ

Похоже на ошибку... Пожалуйста, поднимите вопрос на нашем GitHub. Обязательно добавьте проект, в котором воспроизводится проблема.

Другие вопросы по тегам