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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 尼日利亚落地签过期了怎么办 期货亏光了所有怎么办 期货钱亏完了该怎么办 做黄金亏损500万怎么办 炒黄金被骗35万怎么办 淘宝发货填错单号怎么办 发货单号填错了怎么办 发快递忘了单号怎么办 国际物流查不到物流怎么办 纸币上印邪教该怎么办 钥匙掉到电梯缝里怎么办 汽车电子钥匙铜线折一根怎么办 防盗门的锁不好开怎么办 同学帮刷饭卡说不用还钱了怎么办 em231电源指示灯不亮怎么办 运行广联达卡住怎么办 马桶被粪便(大便)堵了怎么办 子宫壁厚12mm怎么办 管子太多每次洗澡都是冷水怎么办 热水冷水装反了怎么办 大树被高锰酸钾灌溉了怎么办会死吗 防盗门门被锁了怎么办 门被里面反锁了怎么办 门里面被锁了怎么办 被锁在门里怎么办 门锁住了没钥匙怎么办 车被别人锁住了怎么办 汽车轱辘被锁了怎么办 小车轮胎被锁了怎么办 国防光缆无明显标识被挖断怎么办 临工210挖掘机柴油进气怎么办 汽车抛光蜡干了怎么办 洗碗铁丝球吃了怎么办 牙套铁丝吃肚子怎么办 小铁丝吃到肚子怎么办 绿色抛光膏干了怎么办 不锈钢被盐酸弄黑了怎么办 不锈钢被草酸洗了怎么办 不锈钢洗菜盆被草酸腐蚀了怎么办 汽油发电机加了柴油怎么办 装载机发动机加入齿轮油怎么办