html 二进制流转doc,二进制传输协议.doc

二进制传输协议

二进制传输协议

篇一:UDP协议实现二进制文件传输(java)

1.UDP概念

UDP 是User Datagram Protocol的简称, 中文名是用户数据包协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。

2.文件传输流程

2.1在此使用UDP协议传送文件的程序中,先在服务器端设定监听端口号(3666),在接收客户端发来的请求之前一直处于阻塞状态;在客户端则从本地读取二进制文件并封装成数据报,并发送到相应的服务器端(ip:,端口:3666);当服务器端接收到客户端发来的请求后,则对数据进行处理,即读取并保存数据,然后返回操作后的信息到客户端;当客户端接收到服务器端的信息后,则输出服务器端返回的信息,到此时就完成了客户端的请求和服务器端的应答;最后关闭DatagramSocket。

3.程序流程图

4.程序部分源码

4.1 服务器端源码

publicclass Server extends Thread { DatagramSocketds = null; DatagramPacketdp = null; File file = null;

@Override

publicvoid run() {

// TODO Auto-generated method stubtry {

// 设置端口为3666

ds = newDatagramSocket(3666); while (true) {

byte[] buf = newbyte[1024 * 64];

// 用于接收长度为1024的数据包

dp = newDatagramPacket(buf, buf.length);

// 从此套接字接收数据报包,此方法在接收到数据之前处于阻塞状态 ds.receive(dp);

// 保存接收文件,文件名取系统当前时间

long temp = System.currentTimeMillis(); this.saveFile(dp, temp + );

// 为使反馈过程效果明显,线程休眠2秒后发送回复信息 Thread.sleep(2000);

String message = server has received it.; DatagramPacket packet = newDatagramPacket(message.getBytes(),

message.length(), InetAddress.getLocalHost(), 6666);

}

// 发送回复数据包ds.send(packet); }

} catch (Exception e) { e.printStackTrace(); }

/**

* 保存接收到的文件 *

* @paramdp

* @paramfilePath保存文件所在的路径* @throwsIOException*/

privatevoidsaveFile(DatagramPacketdp, String filePath) throwsIOException {

FileOutputStreamfileOutputStream = newFileOutputStream(new File( filePath));

fileOutputStream.write(dp.getData(), 0, dp.getData().length);

fileOutputStream.(来自:WwW.xltkwJ.cOm 小龙 文档 网:二进制传输协议)close(); } }

4.2客户端源码

publicclass Client {

privateDatagramSocketds = null; privateDatagramPacketdp = null; /**

* 传输文件

* @paramfilePath文件所在路径 */

publicvoidTransmitFile(String filePath) { try {

// 从本地读取文件

byte[] data = this.readFile(filePath); ds = newDatagramSocket(6666);

// 封装数据报

dp = newDatagramPacket(data, (int) data.length,InetAddress.getLocalHost(), 3666); // 开始传输文件 ds.send(dp);

// 接收从服务器回复的信息

byte[] buf = newbyte[1024];

dp = newDatagramPacket(buf, buf.length); ds.rece

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值