У меня проблема с тем, что мое устройство 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 , и мне нужно обойти это?
Заранее благодарю за любую помощь, которую вы можете оказать мне по этому вопросу.