Android不接收广播UDP,但接收定向UDP

时间:2011-10-13 22:13:32

标签: java android sockets udp broadcast

我遇到的问题是我的Android设备(HTC Incredible运行库存2.3.4 rom)无法接收广播UDP,但是当我获得设备的IP(在同一网络上)并发送将数据包直接发送到IP,手机会立即识别并解释它。我已经在两台不相关的PC上测试了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 issue,我需要围绕这个进行编程吗?

提前感谢您提供有关此事的任何帮助。

2 个答案:

答案 0 :(得分:2)

尝试使用multicastlock。您的手机似乎忽略了不直接发给他的数据包(就像广播那样)。

答案有点迟了......但也许它可以帮助那些有同样问题的人。 :)

答案 1 :(得分:0)

  

这是HTC难以置信的问题HTC问题

非常喜欢它。

  

我需要围绕这个进行编程吗?

除了依靠广播之外,你不能。