multicastSocket实现单播组播 局域网通信
来源:互联网 发布:java中最难的是什么 编辑:程序博客网 时间:2024/06/05 09:27
@Event(value = R.id.test2)private void test2(View w) { new Thread(new Runnable() { @Override public void run() { service(); } }).start();}@Event(value = R.id.test3)private void test3(View w) { new Thread(new Runnable() { @Override public void run() { getReceiver(); } }).start();}@Event(value = R.id.test4)private void test4(View w) { new Thread(new Runnable() { @Override public void run() { registSocket(); } }).start();}public void getReceiver() { if (!multicastSocket.isClosed() && null != multicastSocket) { try { String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "test444"; byte[] buf2 = time.getBytes(); //192.168.1.101s InetAddress byName = null; byName = InetAddress.getByName("192.168.1.126"); DatagramPacket datagramPacket = new DatagramPacket(buf2, buf2.length, byName, 10000); System.out.println("数据发送。。datagramPacket。"); multicastSocket.send(datagramPacket); Thread.sleep(1000); } catch (Exception e) { e.printStackTrace(); } }}MulticastSocket multicastSocket;public void registSocket() { if (ip != null) { System.out.println("ip:" + ip); try { if (!multicastSocket.isClosed() && null != multicastSocket) { String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "test333"; byte[] buf2 = time.getBytes(); //192.168.1.101s InetAddress byName = InetAddress.getByName(ip.getHostAddress().toString()); DatagramPacket datagramPacket = new DatagramPacket(buf2, buf2.length, byName, 10000); System.out.println("数据发送。。datagramPacket。"); multicastSocket.send(datagramPacket); Thread.sleep(1000); } } catch (Exception e) { e.printStackTrace(); } }}public void service() { // TODO Auto-generated method stub try { multicastSocket = new MulticastSocket(10000); InetAddress address = InetAddress.getByName("239.0.0.1"); multicastSocket.joinGroup(address); byte[] buf = new byte[1024]; while (true) { DatagramPacket datagramPacket = new DatagramPacket(buf, buf.length); multicastSocket.receive(datagramPacket); // 接收数据,同样会进入阻塞状态 byte[] message = new byte[datagramPacket.getLength()]; // 从buffer中截取收到的数据 System.arraycopy(buf, 0, message, 0, datagramPacket.getLength()); ip = datagramPacket.getAddress(); System.out.println(ip); System.out.println(new String(message)); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 接收数据时需要指定监听的端口号}@Event(value = R.id.test1)private void test(View w) { new Thread(new Runnable() { @Override public void run() { sent(); } }).start();}public void sent() { MulticastSocket multicastSocket; try { multicastSocket = new MulticastSocket(); InetAddress address = InetAddress.getByName("239.0.0.1"); // 必须使用D类地址 multicastSocket.joinGroup(address); // 以D类地址为标识,加入同一个组才能实现广播 multicastSocket.setLoopbackMode(false); while (true) {//心跳包 String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "test1"; byte[] buf = time.getBytes(); DatagramPacket datagramPacket = new DatagramPacket(buf, buf.length); datagramPacket.setAddress(address); // 接收地址和group的标识相同 datagramPacket.setPort(10000); // 发送至的端口号 multicastSocket.send(datagramPacket); Thread.sleep(1000); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }}
0 0
- multicastSocket实现单播组播 局域网通信
- Android 局域网内功能模块开发,教你怎么快速获取局域网内所有IP并且进行通信------ MulticastSocket
- 网络通信(4)--MulticastSocket
- Python3 socketserver 实现局域网通信
- MulticastSocket
- 使用MulticastSocket实现多点广播
- 使用MulticastSocket实现组播
- 使用MulticastSocket实现多点广播
- 使用MulticastSocket实现多点广播
- 利用Winsock控件实现局域网通信(一)
- 利用Winsock控件实现局域网通信(二)
- 利用Winsock控件实现局域网通信(一)
- 利用Winsock控件实现局域网通信(二)
- 利用Winsock控件实现局域网通信
- C#做服务器,客户端,实现局域网通信
- 网络编程~C++实现局域网通信
- MFC UDP CSocket实现局域网通信
- 局域网内主机之间Socket通信实现
- runtime-ios
- NSError和NSException区别
- 在Servlet使用getServletContext()获取ServletContext对象出现java.lang.NullPointerException(空指针)异常的解决办法
- 袁腾飞——春秋战国
- 集合随机抽取与排序(双色球)
- multicastSocket实现单播组播 局域网通信
- 城市列表-根据拼音首字母排序
- Linux——文件操作
- Logistic Regression 损失函数理解
- hadoop2.7.2安装部署教程
- Fiddler过滤指定域名
- 文章标题
- 第十二课通知界面变更接口——C#计算器编程教学
- Android Studio如何设置代码自动提示