基于Java中UDP的广播形式(实例讲解)

 更新时间:2017年12月15日 08:42:53   作者:anmofree  
下面小编就为大家分享一篇基于Java中UDP的广播形式(实例讲解),具有很好的参考价值,希望对大家有所帮助

UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地 ,也不能保证数据包到达的顺序。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

在Java中UDP的实现:

* UDP:

* 客户端:

* 1.创建用于UDP通信的socket对象---DatagramSocket(用于UDP数据的发送和接收)---数据报套接字

* 2.准备数据,封装包----DatagramPacket(数据包)

* 3.发送数据,通过send方法

* 4.关闭套接字对象--socket对象

* 服务器端: 接收数据

* 1.创建socket套接字对象,并绑定端口号

* 2.创建包对象,创建空数组,准备接收数据

* 3.接收数据

* 4.关闭资源

* UDP广播方式:

* 同一网段所有主机都能接收,前提是端口要监听

* 客户端发送广播,开启端口监听的服务端接收并打印消息

* 广播的实现 :由客户端发出广播,服务器端接收

* String host = "255.255.255.255";//广播地址--代表所有主机

* 10.0.122.255----代表前三个网段是 10.0.122的所有主机

代码实现:

客户端(发送端):

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class UDP_client {
 public static void main(String[] args) throws IOException {
 //1.创建对象
 //构造数据报套接字并将其绑定到本地主机上任何可用的端口。
 DatagramSocket socket = new DatagramSocket();
 //2.打包
 byte[] arr = "客户端:哈哈。。。。".getBytes();
 //四个参数: 包的数据 包的长度 主机对象 端口号   
 DatagramPacket packet = new DatagramPacket
  (arr, arr.length,InetAddress.getByName("10.0.122.255") , 4000);
 
 //3.发送
 socket.send(packet);
 
 //4.关闭资源
 socket.close();
 }
 
}

服务器端(接收端):

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
import java.util.Arrays;


public class UDP_server {
 public static void main(String[] args) throws IOException {
 //1
 DatagramSocket serverSocket = new DatagramSocket(4000);
 //2
 byte[] arr = new byte[1024];
 DatagramPacket packet = new DatagramPacket(arr, arr.length);
 
 //3 当程序运行起来之后,receive方法会一直处于监听状态
 serverSocket.receive(packet);
 //从包中将数据取出
 byte[] arr1 = packet.getData();
 System.out.println(new String(arr1));
 
 //4
 serverSocket.close();
 }
}

结果:

前三个网段是 10.0.122的所有主机上的端口号为4000的服务器端,只要开着,都可以接收到 ---

客户端:哈哈。。。。

以上这篇基于Java中UDP的广播形式(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java 多线程synchronized关键字详解(六)

    Java 多线程synchronized关键字详解(六)

    这篇文章主要介绍了Java 多线程synchronized关键字详解(六)的相关资料,需要的朋友可以参考下
    2015-12-12
  • SpringBoot动态生成接口实现流程示例讲解

    SpringBoot动态生成接口实现流程示例讲解

    最近遇到一个需求,需要在程序运行过程中,可以动态新增接口,自定义接口参数名称,基本类型,以及请求方法,请求头等等。通过几天的研究,找到了我需要的解决方案
    2023-01-01
  • springboot整合logback打印日志,分文件

    springboot整合logback打印日志,分文件

    本文主要介绍了springboot整合logback打印日志,分文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • IDEA创建父项目和子项目的实现步骤

    IDEA创建父项目和子项目的实现步骤

    本文主要介绍了IDEA创建父项目和子项目的实现步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • Java框架入门之简单介绍SpringBoot框架

    Java框架入门之简单介绍SpringBoot框架

    今天给大家带来的是关于Java的相关知识,文章围绕着SpringBoot框架展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Maven仓库无用文件和文件夹清理的方法实现

    Maven仓库无用文件和文件夹清理的方法实现

    这篇文章主要介绍了Maven仓库无用文件和文件夹清理的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Java中instanceof关键字的用法总结

    Java中instanceof关键字的用法总结

    instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据
    2013-10-10
  • mybatis-flex实现链式操作的示例代码

    mybatis-flex实现链式操作的示例代码

    MyBatis-Flex它提供了一种链式操作方式,本文主要介绍了mybatis-flex实现链式操作的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06
  • Java实现的断点续传功能的示例代码

    Java实现的断点续传功能的示例代码

    本篇文章主要介绍了Java实现的断点续传功能的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • MyBatis持久层框架的用法知识小结

    MyBatis持久层框架的用法知识小结

    MyBatis 本是apache的一个开源项目iBatis,接下来通过本文给大家介绍MyBatis持久层框架的用法知识小结,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-07-07

最新评论