溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java怎么實(shí)現(xiàn)組播

發(fā)布時(shí)間:2021-11-24 16:44:21 來(lái)源:億速云 閱讀:181 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“java怎么實(shí)現(xiàn)組播”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“java怎么實(shí)現(xiàn)組播”吧!

MulticastSocket multicastSocket;@FXMLButton btnmuticast,btnmuticaststop;public void btnmuticastOnMouseClicked(MouseEvent event)
{try {multicastSocket = new MulticastSocket(3001);        multicastSocket.setInterface(InetAddress.getByName("192.168.1.101"));        InetAddress multiaddr = InetAddress.getByName("224.26.83.1");        multicastSocket.joinGroup(multiaddr);        multicastSocket.setTimeToLive(4);        byte[] buff = "QQ".getBytes();        DatagramPacket datagramPacket = new DatagramPacket(buff,buff.length,multiaddr,3001);        multicastSocket.send(datagramPacket);        logger.info("btnmuticastOnMouseClicked");    } catch (IOException e) {
        e.printStackTrace();    }

}public void bbtnmuticaststopOnMouseClicked(MouseEvent event)
{if((multicastSocket!= null) && (multicastSocket.isConnected()))
    {logger.info("bbtnmuticaststopOnMouseClicked");        multicastSocket.close();    }


}

接收端:

public class MulticastReceive {
    public static void main(String[] args) throws Exception {
        listener();
    }

    public static void listener() throws Exception{
        //組播地址
        InetAddress group = InetAddress.getByName("224.0.0.1");
        int port = 8888;
        //創(chuàng)建組播套接字
        MulticastSocket msr = null;
        try {
            msr = new MulticastSocket(port);
            //加入連接
            msr.joinGroup(group);
            byte[] buffer = new byte[8192];
            System.out.println("接收數(shù)據(jù)包啟動(dòng)!(啟動(dòng)時(shí)間: "+new Date()+")");
            while(true){
                //建立一個(gè)指定緩沖區(qū)大小的數(shù)據(jù)包
                DatagramPacket dp = new DatagramPacket(buffer, buffer.length);
                msr.receive(dp);
                String s = new String(dp.getData(),0,dp.getLength());
                //解碼組播數(shù)據(jù)包
                System.out.println(s);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            if(msr!=null){
                try {
                    msr.leaveGroup(group);
                    msr.close();
                } catch (Exception e2) {
                }
            }
        }
    }
}

發(fā)送端:

public class MulticastSender {
    public static void server() throws Exception{
        InetAddress group = InetAddress.getByName("224.0.0.1");//組播地址
        int port = 8888;
        MulticastSocket mss = null;
        try {
            mss = new MulticastSocket(port);
            mss.joinGroup(group);
            System.out.println("發(fā)送數(shù)據(jù)包啟動(dòng)?。▎?dòng)時(shí)間"+new Date()+")");

            while(true){
                String message = "Hello "+new Date();
                byte[] buffer = message.getBytes();
                DatagramPacket dp = new DatagramPacket(buffer, buffer.length,group,port);
                mss.send(dp);
                System.out.println("發(fā)送數(shù)據(jù)包給 "+group+":"+port);
                TimeUnit.SECONDS.sleep(1);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                if(mss!=null){
                    mss.leaveGroup(group);
                    mss.close();
                }
            } catch (Exception e2) {
            }
        }
    }

    public static void main(String[] args) throws Exception {
        server();
    }
}

到此,相信大家對(duì)“java怎么實(shí)現(xiàn)組播”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI