最近需要实现局域网内手机通过广播搜索硬件功能,网上组播广播自己看的有点迷迷糊糊的,不过好在最后啃出来了。代码贴上,防止以后忘记。 final Thread t = new Thread(){ @Override public void run() { //自己尝试多次,有的时候会出现发出的报文接受不到返回消息,隔2S再发一次 while(result.equals("")) { try { send_socket = new DatagramSocket(); address = InetAddress.getByName("255.255.255.255"); send_socket.setBroadcast(true); packet_send = new DatagramPacket(getData(), getData().length, address, BROADCAST_PORT); send_socket.send(packet_send); tt.start(); LogUtil.i(TAG, "发送报文"); t.sleep(2000); } catch (Exception e) { } } } };
final Thread tt = new Thread(){ @Override public void run() { try{ receive_packet = new DatagramPacket(inBuff,inBuff.length); send_socket.receive(receive_packet); String receiver = new String(receive_packet.getData()).trim(); LogUtil.i(TAG,"收到报文"+receiver); LogUtil.i(TAG,"收到的地址为"+(receive_packet.getAddress().toString()).substring(1,receive_packet.getAddress().toString().length())+"摄像头编号为"+receiver.substring(receiver.length()-6,receiver.length())); result = receiver; handler.sendEmptyMessage(RECEIVEDATA); send_socket.close(); }catch (Exception e){ } } };