当前位置:网站首页>黑马程序员UDP入门
黑马程序员UDP入门
2022-07-19 05:16:00 【闲易生事】
标题UDP协议特点
∙ \bullet ∙ UDP是一种无连接、不可靠传输的协议。
∙ \bullet ∙ 将数据源IP,目的地IP和端口以及数据封装成数据包,大小限制在64KB内,直接发送出去即可。
DatagramPacket:数据包对象
构造器 | 说明 |
---|---|
public DatagramPacket(byet[] buf,int length, InetAddress address,int port) | 创建发送端数据包对象 buf:要发送的内容,字节数组。length:要发送内容的字节长度。address:接收端的IP地址对象。port:接收端端口号 |
public DatagramPacket(byet[] buf,int length) | 创建接收端的数据包对象 buf:用来存储接受的内容。 length:能接收内容的长度。 |
DatagramSocket:发送端和接收端对象
构造器 | 说明 |
---|---|
public DatagramSocket() | 创建发送端的socket对象,系统随机分配一个端口号。 |
public DatagramSocket(int port) | 创建接收端的Socket对象并指定端口号 |
DatagramSocket类成员方法
方法 | 说明 |
---|---|
public void send(DatagramPacket dp) | 发送数据包 |
public void receive(DatagramPacket p) | 接收数据包 |
UDP 一发 一收
接收端代码
package com.lp.d2_udp1;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/* * 接收端 * */
public class ServerDemo2 {
public static void main(String[] args) throws Exception {
System.out.println("=======服务端启动=======");
// 1、创建接收端的数据包对象:注册端口
DatagramSocket socket=new DatagramSocket(8888);
// 2、创建一个数据包对象接受数据
byte[] buffer=new byte[1024*64];
DatagramPacket packet=new DatagramPacket(buffer, buffer.length);
// 3、等待接收数据
socket.receive(packet);
// 4、取出数据即可
int length=packet.getLength();
String rs=new String(buffer,0,length);
System.out.println("收到了:"+rs);
String ip=packet.getSocketAddress().toString();
System.out.println(ip);
socket.close();
}
}
发出端代码
package com.lp.d2_udp1;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/* * 发送端 * */
public class ClientDemo1 {
public static void main(String[] args) throws Exception {
System.out.println("=======客户端启动========");
// 1、创建发送端对象:发送端自带默认端口
DatagramSocket socket=new DatagramSocket();
// 2、创建一个数据包对象封装数据
byte[] buffer="诸天气荡荡,我道日兴隆".getBytes();
DatagramPacket packet=new DatagramPacket(buffer, buffer.length, InetAddress.getLocalHost(),8888);
// 3、发送数据出去
socket.send(packet);
socket.close();
}
}
边栏推荐
- 学习笔记:猫眼top100电影信息爬取
- Leetcode:14. Longest common prefix [thinking + sorting]
- 第三天实验
- “==”与equals的区别
- Leetcode:905. Sort array by parity [double pointer + implementation in three languages]
- Network Security Learning (21) NAT dynamic routing
- Network Security Learning (XVIII) single arm routing, ICMP, layer 3 switching
- Qt给控件添加鼠标事件
- Software engineering final review mind map
- 乐山师范程序设计大赛2020-G: 最大公约数【思维】
猜你喜欢
7-1 懂的都懂
Openstack uses dashboard to perform image operations, manage instances, and other operations
雷达基础系列文章之五:雷达调制样式的功能
Network Security Learning (XXIII) firewall
Unreal Engine learning (2)
Network Security Learning (XVIII) single arm routing, ICMP, layer 3 switching
RDO deployment openstack single node
使用gem5在fft上进行测试beta版本
Code audit system
Secure Code Warrlor学习记录(二)
随机推荐
Leetcode:13. Roman numeral to integer [key value pair mapping]
Leshan normal programming competition 2020-c: maximum product [thinking]
Understanding of arm interrupt priority
使用小技巧(一)
经纬度及其与坐标系的转换
Panzer_Jack 的 个人博客成立日
FPGA skimming P3: 4-bit numeric comparator circuit, 4bit carry ahead adder circuit, priority encoder circuit, priority encoder
Leshan normal programming competition 2020-h: least common multiple [find the number of factors]
Software engineering final review mind map
(data and electricity) summary of various triggers - FPGA octet (1)
详细讲解JS中的加法(+)运算,基本数据类型相加,引用数据类型相加底层的运算规则,[]+{},{}+[]
After ise14.7 was installed in win10 system, the software flashed back and the driver could not be installed normally
NJU南京大学高程课设:坦克大战(BattleCity)
雷达基础系列文章之五:雷达调制样式的功能
Thinkphp5 verification code
my homework 模板 latex版本
MongoDB
Leetcode: Game 302 (summary)
第二次实验 静态路由的扩展配置
巴特沃斯(Butterworth)滤波器的设计和幅频特性曲线绘制