我遇到的问题是我的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,我需要围绕这个进行编程吗?
提前感谢您提供有关此事的任何帮助。
答案 0 :(得分:2)
尝试使用multicastlock。您的手机似乎忽略了不直接发给他的数据包(就像广播那样)。
答案有点迟了......但也许它可以帮助那些有同样问题的人。 :)
答案 1 :(得分:0)
这是HTC难以置信的问题HTC问题
非常喜欢它。
我需要围绕这个进行编程吗?
除了依靠广播之外,你不能。