UDP发送文件
接收端
package com.zy.demo2; import java.io.File;
import java.io.FileOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException; public class UDPReceive { public static void main(String[] args) throws Exception {
//1创建码头
DatagramSocket datagramSocket = new DatagramSocket(9999);//双方约定的 //2创建集装箱
// byte b[]=new byte[1024];//空的字节数组
// DatagramPacket datagramPacket = new DatagramPacket(b, b.length);
//
//
// //3收货
// datagramSocket.receive(datagramPacket);//线程阻塞!!!(没收到时) //-----------------------------
byte[] aa = new byte[1]; FileOutputStream fileOutputStream = new FileOutputStream(new File("E:\\接收的文件\\1.png")); do {
DatagramPacket datagramPacket = new DatagramPacket(aa, 0, aa.length);
if(datagramPacket.getLength()!=1){
break;
}
datagramSocket.receive(datagramPacket);
System.out.println(datagramPacket.getLength());
fileOutputStream.write(datagramPacket.getData());
} while (true);
System.out.println("接收完成");
//---------------------------------------
//4查看货物
// System.out.println(new String(b)); //5释放资源
datagramSocket.close();
} }
发送端
package com.zy.demo2; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException; public class UDPSend { public static void main(String[] args) throws Exception { //1创建码头
DatagramSocket datagramSocket = new DatagramSocket();
//2创建集装箱
// String data="中国食用油";
// byte[] bytes = data.getBytes(); //3发送数据
//根据名字获取主机(机器互联)
InetAddress byName = InetAddress.getByName("192.168.219.61");//getByName("127.0.0.1")也可以写ip,不一定非得是主机名 // DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length, byName, 9999); // datagramSocket.send(datagramPacket); byte bb[]=new byte[1];//udp容易丢包,为了降低损失,字节数组调整小些
FileInputStream fileInputStream = new FileInputStream(new File("E:\\13.png"));
int read = fileInputStream.read(bb); while(read!=-1){
DatagramPacket datagramPacket = new DatagramPacket(bb, bb.length, byName, 9999);
datagramSocket.send(datagramPacket);
read = fileInputStream.read(bb);
} //4释放资源
datagramSocket.close(); } }
程序一个bug:接收端接收完数据时JVM还在运行着,找不到合适的方法让退出JVM
UDP发送文件的更多相关文章
- Socket之UDP发送文件
内容导航 一. Socket之UDP异步传输文件 二.Socket之UDP异步传输文件 三.Socket之UDP异步传输文件-多文件传输和文件MD5校验 四.Socket之UDP异步传输文件-用 ...
- 六、Socket之UDP异步传输文件-实现稳定的文件传输
上一篇文章五.Socket之UDP异步传输文件-实现传输中取消传送中,还遗留了一个传输文件最大的问题,就是传输过程中丢包,这样在文件传输过程中就会卡住了,这篇文章就来解决文件传输中的丢包问题,实现稳定 ...
- 二、Socket之UDP异步传输文件
上一篇文章一.Socket之UDP异步传输文件中,实现了文件的基本传输,但是传输过程中的信息是看不到的,这一篇是对上一篇进行了一些改进,并且可以了解传输的信息(加入了Log),还加入了接收或者拒绝接收 ...
- 三、Socket之UDP异步传输文件-多文件传输和文件MD5校验
本文接着上一篇文章二.Socket之UDP异步传输文件,在上一篇文章的基础上实现多文件的传输和文件传输完成后进行完整性校验. 要实现多文件的传输,必须要对文(2)中发送文件的数据格式进行改进,必须加入 ...
- 四、Socket之UDP异步传输文件-用控件显示文件传输进度
上一篇文章三.Socket之UDP异步传输文件中,实现了多文件的传输和MD5校验,还显示了文件传输过程中的信息,在这一篇文章中,将介绍怎样实现传输文件的进度显示和实现选择保存文件路径. 首先,来实现一 ...
- 五、Socket之UDP异步传输文件-实现传输中取消传送
上一篇文章四.Socket之UDP异步传输文件中,只实现了传输开始前拒绝接收文件,没有实现文件传输进行的时候取消传送,这篇文章中我们就来介绍怎样实现这个功能. 在传输过程中取消文件的传送,有很多地方要 ...
- Linux 下V4l2摄像头采集图片,实现yuyv转RGB,RGB转BMP,RGB伸缩,jpeglib 库实现压缩RGB到内存中,JPEG经UDP发送功(转)
./configure CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld --host=arm-linux --prefix=/usr/loca ...
- win7系统下的飞秋发送文件失败问题
飞秋发送文件失败这个问题大多数是由防火墙引起的1.检查windows自带的防火墙设置,在左侧的"允许程序通过windows防火墙"查看飞秋是否存在,不存在则增加之,公网.专网都勾选 ...
- 利用Socket远程发送文件
思想: 1.注意使用两个通道,一个普通对象通信通道,另一个纯净的文件字节流通道 2.利用通信通道发送文件请求,新建字节流通道,开始发送文件
随机推荐
- M43 第一阶段考试
一.解答题 1.统计当前主机的TCP协议网络各种连接状态出现的次数 netstat -an | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a ...
- .NET 云原生架构师训练营(模块二 基础巩固 RabbitMQ Masstransit 介绍)--学习笔记
2.6.6 RabbitMQ -- Masstransit 介绍 Masstransit 是什么 Quickstart 消息 Message Masstransit 是什么 Masstransit 是 ...
- LeetCode225 用队列实现栈
使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 注意: 你只能使用队列的基本操作 ...
- intellij idea2020将javaWeb项目打成war包并部署到阿里云服务器遇到java.lang. UnsupportedClass VersionError问题(已解决)
首先将javaweb项目打包成war文件(有关如何打包参考 https://jingyan.baidu.com/article/20b68a88642829386cec62f7.html.https: ...
- ubuntu 安装 docker 并配置镜像加速(使用 apt-get 进行安装)
ubuntu 安装docker CentOS docker安装 https://blog.csdn.net/weixin_44953227/article/details/108597310 你需要这 ...
- Java JDBC的 url 配置信息和Mybatis核心配置文件(MySQL 的配置信息)
JDBC 连接数据库的 url driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/smbms?uesSSL=true&u ...
- zabbix_server上的问题
不要写成127.0.0.1,要不然一直包zabbix agent没有启动.
- QPainter 绘制图像接口
阅读本文大概需要 3 分钟 我们在开发软件的过程中,绘制图像功能必不可少,使用 Qt 绘制图像时非常简单,只需要传递几个参数就可以实现功能,在 Qt 中绘制图像的 api有好几个 void drawI ...
- 使用jib-maven-plugin将Spring Boot项目发布为Docker镜像
目录 介绍 使用 总结 介绍 将spring boot(cloud)项目发布到docker环境作为镜像,一般常用的一个是com.spotify的docker-maven-plugin这个maven插件 ...
- 05. struts2中为Action属性注入值
概述 struts2为Action中的属性提供了依赖注入功能 在struts2的配置文件中,我们可以很方便地为Action中的属性注入值.注意:属性必须提供get,set方法. 配置 <acti ...