MulticastSocket的简单使用
来源:互联网 发布:网络技术开发是什么 编辑:程序博客网 时间:2024/06/05 01:00
我们这里使用MulticastSocket以及组播锁的形式实时监控对应的ip和端口是否实时存在!
下面我们来看代码:
public Thread getListenThread(){Thread thread = null;try {thread = new Thread() {private static final String TAG = "ReceiverThread";private static final String MULTICAST_IP = "239.255.255.250";private static final int MULTICAST_PORT = 1900;private WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);private MulticastSocket multicastSocket = new MulticastSocket(MULTICAST_PORT);private InetAddress groupInetAddress = InetAddress.getByName(MULTICAST_IP);private boolean joinedGroup = false;@Overridepublic void run() {while (!this.isInterrupted()) {if (wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED) {if (!joinedGroup)try {multicastSocket.joinGroup(groupInetAddress);wifiManager.createMulticastLock(TAG).acquire();joinedGroup = true;} catch (IOException ex) {Log.i(TAG, "Failed to join Multicast group:" + ex.getMessage());}try {byte[] buffer = new byte[1024];DatagramPacket packet = new DatagramPacket(buffer, buffer.length);while(true){multicastSocket.receive(packet);String text = new String(buffer, 0, packet.getLength());;//LogUtil.i(TAG, "Message received: /n" + text+"RECEIVED END");Message msg = new Message();msg.what = 4;Bundle bundle = new Bundle();bundle.putString("text", text);msg.setData(bundle);handlerdishes.sendMessageDelayed(msg,500);}} catch (SocketTimeoutException e) {e.printStackTrace();} catch (IOException ex) {multicastSocket = null;ex.printStackTrace();} } elsejoinedGroup = false;}}};} catch (IOException e) {e.printStackTrace();}return thread;}
如上我们可知是使用线程的方式启动MulticastSocket,activity中启动的代码很简单:
/* * 监听盒子状态信息 */Thread boxListener_thread = getListenThread();boxListener_thread.start();
同时使用handler处理相对应的事件,就OK了!
需要的权限有如下:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RESTART_PACKAGES" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.READ_LOGS" /> <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
1 0
- MulticastSocket的简单使用
- MulticastSocket类的使用
- MulticastSocket 使用
- MulticastSocket 使用
- MulticastSocket 使用
- Java网络编程 MulticastSocket类的使用
- java点滴之MulticastSocket的使用
- 使用MulticastSocket发送组播包无法获取IGMP包的问题
- 使用MulticastSocket进行手机之间的多播消息发送
- MulticastSocket
- 使用MulticastSocket实现多点广播
- 使用MulticastSocket实现组播
- 使用MulticastSocket实现多点广播
- 使用MulticastSocket实现多点广播
- 组播Sokcet的MulticastSocket
- Java使用MulticastSocket实现多点广播
- 使用MulticastSocket实现多点广播(1)
- 使用MulticastSocket实现多点广播(2)
- webservice通过wsdl生成java文件命令
- nginx 日志访问量统计
- Android随笔之——Android时间、日期相关类和方法
- Genymotion - 强大好用高性能的 Android 模拟器
- [LeetCode]Isomorphic Strings
- MulticastSocket的简单使用
- Same Tree
- Android Sqlite 框架 GreenDao的原理与使用简介
- 2015-09-30 smali/baksmali v2.1.0
- iOS之CocoaPods的使用
- Android系统 adb shell命令大全
- gson使用异常
- Unity3D-重新编译Mono加密DLL
- Java swing 实现图片闪烁