UDP—用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地 ,也不能保证数据包到达的顺序。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
* UDP:
* 客户端:
* 1.创建用于UDP通信的socket对象—DatagramSocket(用于UDP数据的发送和接收)—数据报套接字
* 2.准备数据,封装包—-DatagramPacket(数据包)
* 3.发送数据,通过send方法
* 4.关闭套接字对象–socket对象
* 服务器端: 接收数据
* 1.创建socket套接字对象,并绑定端口号
* 2.创建包对象,创建空数组,准备接收数据
* 3.接收数据
* 4.关闭资源
* 同一网段所有主机都能接收,前提是端口要监听
* 客户端发送广播,开启端口监听的服务端接收并打印消息
* String host = "255.255.255.255";//广播地址–代表所有主机
* 10.0.122.255—-代表前三个网段是 10.0.122的所有主机
代码实现:
客户端(发送端):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
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();
}
}
|
服务器端(接收端):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
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的广播形式(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持快网idc。
原文链接:http://www.cnblogs.com/WangLei1221/archive/2017/12/14/8039784.html
相关文章
- 个人网站服务器域名解析设置指南:从购买到绑定全流程 2025-06-10
- 个人网站搭建:如何挑选具有弹性扩展能力的服务器? 2025-06-10
- 个人服务器网站搭建:如何选择适合自己的建站程序或框架? 2025-06-10
- 64M VPS建站:能否支持高流量网站运行? 2025-06-10
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
-
2025-05-27 47
-
2025-05-27 48
-
2025-05-25 91
-
2025-05-29 85
-
浅谈C++类型转化(运算符重载函数)和基本运算符重载(自增自减)
2025-05-27 67