java 网络编(二)UDP的传输
2024-10-15 15:45:39
发送端:
package cn.sasa.netDemo1; import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress; public class SendDemo { public static void main(String[] args) throws IOException {
/**
* DatagramPacket 数据报包,用于封装数据
*
* DatagramSoket 用于数据传输
*
* 两者都用于发送和接收
*/ //实现UDP的发送
//1、创建DatagramPacket对象,封装数据、接收的地址和端口
//2、创建DatagramSocket
//3、调用DatagramSocket的send方法发送数据
//4、关闭资源,关闭DatagramSocket
//
byte[] buff = "hello".getBytes();
InetAddress host = InetAddress.getByName("127.0.0.1");
DatagramPacket packet = new DatagramPacket(buff, buff.length, host, 8046); DatagramSocket socket = new DatagramSocket();//发送使用空参构造函数
socket.send(packet);//调用send
socket.close();
} }
接收端:
package cn.sasa.netDemo1; import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket; public class ReceiveDemo { public static void main(String[] args) throws IOException {
/**
* UDP的接收端
*
* DatagramPacket 封装数据包,接收数据
*
* DatagramSocket 实现数据传输
*
* 接收步骤:
* 1、创建DatagramSocket,绑定端口号,与发送端的端口号保持一致
* 2、创建字节数组,接收数据
* 3、创建DatagramPacket
* 4、调用DatagramSocket的receive(DatagramPacket p)
* 接收数据放在数据包
* 5、拆包
* 发送端IP
* 接收到的字节长度
* 发送端端口号
* 6、关闭资源
*
*/
//DatagramPacket
DatagramSocket socket = new DatagramSocket(8046);
byte[] buff = new byte[1024];
DatagramPacket packet = new DatagramPacket(buff, buff.length);
socket.receive(packet);
int length = packet.getLength();//接收的字节长度
System.out.println(new String(buff,0,length));
System.out.println(packet.getAddress().getHostAddress()); //打印发送端IP地址
System.out.println(packet.getPort());
socket.close();
} }
最新文章
- Lua 与 Redis
- c#选择文件文件夹
- Android学习系列(41)--Android Studio简单使用
- [转]oracle 10g数据泵之impdp-同时导入多个文件
- 【转】vs2012 打包安装更改 setup.exe的图标
- 最新中国IP段获取办法与转成ROS导入格式
- MVC弹出子页面向父页面传值
- 异步文件上传组件 Uploader
- 关于设置ScrollView的滚动条为隐藏的方法
- Android:创建可穿戴应用 - 安装和依赖管理
- Mac通过brew安装reds、memcached
- WeTest----如何使用WeTest进行App性能测试?
- Linux cpu 内存 压力测试
- [物理学与PDEs]第2章习题4 习题 3 的变分
- 学习笔记----php环境配置
- 5、Kafka生产过程分析
- Visual Studio Code--开发大大们都在用的编辑器
- HDU 2612 find a way 【双BFS】
- highchart应用示例1--2个不同类型变量2个y轴
- jQuery操作DOM节点的方法总结
热门文章
- 【emWin】例程十一:GIF图像显示
- Go Revel - i18n(国际化)
- 从去除毛刺的策略看开运算opening_circle和闭运算closing_circle的异同
- 详解Linux安装GCC
- Docker 基本指令整理(一)
- Xcode6: CocoaPods 错误 target overrides the `OTHER_LDFLAGS`...
- android bionic c 对比 gnu c
- Kafka 2.0 ConsumerGroupCommand新功能
- 解决在antd中使用 autoprefixer 9.4.5 会抛出错误 Replace text-decoration-skip: ink to text-decoration-skip-ink: auto, because spec had been changed 的问题
- 【python】用python生成pdf文件