UDP 多播 Java

1、服务端

public class UdpMulticastServer {

    /**
     * @param args
     */
    public static void main(String[] args) {

        // TODO Auto-generated method stub
        // 接受组播和发送组播的数据报服务都要把组播地址添加进来
        String host = "225.0.0.1";// 多播地址
        int port = 9998;
        int length = 1024;
        byte[] buf = new byte[length];
        MulticastSocket ms = null;
        DatagramPacket dp = null;
        try {
            ms = new MulticastSocket(port);
            dp = new DatagramPacket(buf, length);

            // 加入多播地址
            InetAddress group = InetAddress.getByName(host);
            ms.joinGroup(group);

            System.out.println("监听多播端口打开:");
            while (true) {
                ms.receive(dp);
                int i;
                StringBuffer sbuf = new StringBuffer();
                for (i = 0; i < 1024; i++) {
                    if (buf[i] == 0) {
                        break;
                    }
                    sbuf.append((char) buf[i]);
                }
                System.out.println("收到多播消息:" + sbuf.toString());
                try {
                    Thread.sleep(1000);
                }
                catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2、客户端

public class UdpMulticastClient {

    /**
     * @param args
     */
    public static void main(String[] args) {

        // TODO Auto-generated method stub
        String host = "225.0.0.1";// 多播地址
        int port = 9998;
        String message = "test-multicastSocket";
        try {
            InetAddress group = InetAddress.getByName(host);
            MulticastSocket s = new MulticastSocket();
            // 加入多播组
            s.joinGroup(group);
            DatagramPacket dp = new DatagramPacket(message.getBytes(),
                    message.length(), group, port);
            while (true) {
                s.send(dp);
                try {
                    Thread.sleep(1000);
                }
                catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        catch (UnknownHostException e) {
            e.printStackTrace();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}
时间: 2024-08-06 08:29:43

UDP 多播 Java的相关文章

c/c++常用代码--udp多播

#include <stdio.h> #include <stdlib.h> #include <windows.h> #include <winsock.h> #pragma comment(lib, "ws2_32.lib") #define close closesocket #undef IP_ADD_MEMBERSHIP #define IP_ADD_MEMBERSHIP 12 int main(void) { WSADATA

UDP 广播 Java

1.服务端 public class UdpBroadcastServer { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int port = 9999;// 开启监听的端口 DatagramSocket ds = null; DatagramPacket dp = null; byte[] buf = new byte[1024];// 存储发

Java网络编程(TCP/UDP)

首先我们先了解一下计算机网络的基本知识. 什么是网络? 将不同区域的计算机连接到一起.按照区域的大小可分为局域网,城域网,广域网(互联网). 地址即IP地址,确定在网络上的一个绝对地址. 端口号:区分计算机上的软件, 占用两个字节 ,端口号范围为: 0-65535, 一共65536个端口号. 1. 在同一个协议下端口号不能重复,不同的协议可以重复 2. 1024以下的端口号尽量不要使用.有可能已被占用,如80–http 21–ftp **资源定位:**URL 统一资源定位符 URI:统一资源 数

java基础知识回顾之java Socket学习(一)--UDP协议编程

UDP传输:面向无连接的协议,不可靠,只是把应用程序传给IP层的数据报包发送出去,不保证发送出去的数据报包能到达目的地.不用再客户端和服务器端建立连接,没有超时重发等机制,传输速度快是它的优点.就像寄信,写好信放到邮箱桶里面,既不能保证信件在邮递过程中不丢失,也不能保证信件是按顺序寄到目的地的. 看java API用到java.net.DatagramSocket和java.net.DatagramPacket类: DatagramSocket:此类表示用来发送和接收数据报包的套接字(IP地址和

JAVA中TCP和UDP传输例子的对比

在本文中我将学到的java中的UDP和TCP在局域网内的传输做了对比,这里强调 的是局域网范围内,非广域网.首先,下面的是我写的在局域网内利用java中的UDP协议写的一个传输文件或者图片的类. --------------------------------------------------------------------------------------------------------------------------------------------------------

java网络编程(4)——udp实现聊天

UDP可以实现在线聊天功能,我这里就是简单模拟一下: 发送端: package com.seven.udp; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class CharByUpdSend implements

java网络编程(3)——UDP

UDP在java中主要使用DatagramSocket来实现通讯,数据一般是通过DatagramPacket来封装: 发送方只需指定接受方的地址和端口,然后通过send()方法就可以把封装在DatagramPacket中数据发送过去! 而接收方只需同样利用DatagramSocket和一个DatagramPacket来接收数据就可以了,接受只需指定接受端口就可以了,具体如下: 发送方: package com.seven.exercise1; import java.net.DatagramPa

网络的基本概念TCP, UDP, 单播(Unicast), 多播(多播)(Multicast)

章相当低级,但相当重要! 我们周围一切差点儿都依赖于把事情抽象成低等级,并在某一点把它详细化,在一些设计概念中.接口层十分清晰而且目标非常集中,应用程序不用考虑操作系统怎样工作,操作系统也不用考虑硬件怎样工作,OSI模型的第4层不须要考虑第三层怎样工作.所以我们仅仅须要集中精力在某一层,就当以下的层正常工作,但这样能行吗?假设你写一个应用,你最好知道OS是怎么样工作的.而且要考虑数据库怎样存储字符的,相同.一个好的操作系统必须要了解硬件是怎样工作的.假设你觉得TCP不须要考虑IP的实现那就搞错了

Java网络编程(UDP程序设计)

//客户端 package org.udp; import java.net.DatagramPacket; import java.net.DatagramSocket; public class UDPClient { public static void main(String[] args) throws Exception{ DatagramSocket ds = null; byte[] buf = new byte[2014]; DatagramPacket dp = null;