Android не получает широковещательный UDP, но получает направленный UDP - PullRequest
3 голосов
/ 14 октября 2011

У меня проблема с тем, что мое устройство Android (устройство HTC Incredible 2.3.4) не может принимать широковещательный UDP, но когда я получаю IP-адрес устройства (в той же сети) и отправляю Пакет напрямую на IP, телефон сразу его распознает и интерпретирует. Я проверил с помощью WireShark на двух несвязанных ПК, один из которых даже не подключен к одному и тому же коммутатору в этой сети, и оба способны видеть пакет (хотя они и называют пакет «искаженным»). Тем не менее, телефон никогда не получает (он не получает требуются какие-либо данные из пакета) поэтому мне интересно, что происходит.

То же самое происходит и в эмуляторе.

Это текущий код.

                m_UDPSocket = new DatagramSocket( 9000 );
                m_UDPSocket.setBroadcast( true ); // unneeded?
                boolean finished = false; 

                byte[] buf = new byte[1024];
                DatagramPacket packet = new DatagramPacket(buf, buf.length);

                m_UDPSocket.setSoTimeout( 1000 );
                do {

                    finished = true;
                    try 
                    {
                        m_UDPSocket.receive(packet);    
                    }
                    catch ( SocketTimeoutException  e )
                    {
                        finished = false; 
                        System.out.print( "Socket recieve timed out" );                             
                    }

                } while( finished == false );
                System.out.print( buf );
                InetAddress address = packet.getAddress();

Значит, мой телефон по какой-то причине отклоняет широковещательные пакеты UDP, есть ли способ проверить, что он принимает пакет на моем телефоне? Это проблема HTC Incredible Проблема HTC , и мне нужно обойти это?

Заранее благодарю за любую помощь, которую вы можете оказать мне по этому вопросу.

Ответы [ 2 ]

2 голосов
/ 23 мая 2013

Попробуйте использовать многоадресную блокировку . Кажется, что ваш телефон игнорирует пакеты, которые не адресованы ему напрямую (как в случае широковещательной рассылки).

Ответ немного поздний ... но, возможно, он поможет кому-то, у кого такая же проблема. :)

0 голосов
/ 14 октября 2011

Это проблема HTC Невероятная, проблема HTC

Очень похоже на это.

и мне нужно программировать вокруг этого?

Нельзя, кроме как полагаться на трансляцию.

...