UDP通信(多播)(java)

java中實現udp通信非常簡單,只需要創建DatagramSocket,然後使用DatagramSocket發送DatagramPacket即可。

接收端

30012爲接收端的端口號

    public static void main(String[] args) {
        try {
            DatagramSocket dgSocket = new DatagramSocket(30012);
            byte[] by = new byte[1024];
            DatagramPacket packet=new DatagramPacket(by,by.length);
            while ( ! Thread.currentThread().isInterrupted()){
                try {
                    dgSocket.receive(packet);
                    String str=new String(packet.getData(),0,packet.getLength());
                    System.out.println("接收到消息:"+str);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            dgSocket.close();
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }

發送端

192.168.1.103爲接收端的主機ip地址,30012爲接收端的端口號
這裏也可以將ip設置爲廣播地址,這樣局域網內所有的主機都會接收到該數據包

public static void main(String[] args) {
        try {
            DatagramSocket dgSocket = new DatagramSocket();
            String msg = "你好,這是我發給你的消息";
            DatagramPacket dgPacket = new DatagramPacket(msg.getBytes(), msg.getBytes().length,
                    InetAddress.getByName("192.168.1.103"),30012);
            while ( ! Thread.currentThread().isInterrupted()){
                dgSocket.send(dgPacket);
                System.out.println("發送消息:"+msg);
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            dgSocket.close();
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章