UDP协议实现二进制文件传输(java).doc

上传人:飞****9 文档编号:136128139 上传时间:2020-06-24 格式:DOC 页数:8 大小:181KB
返回 下载 相关 举报
UDP协议实现二进制文件传输(java).doc_第1页
第1页 / 共8页
UDP协议实现二进制文件传输(java).doc_第2页
第2页 / 共8页
UDP协议实现二进制文件传输(java).doc_第3页
第3页 / 共8页
UDP协议实现二进制文件传输(java).doc_第4页
第4页 / 共8页
UDP协议实现二进制文件传输(java).doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《UDP协议实现二进制文件传输(java).doc》由会员分享,可在线阅读,更多相关《UDP协议实现二进制文件传输(java).doc(8页珍藏版)》请在金锄头文库上搜索。

1、1.UDP概念UDP 是User Datagram Protocol的简称, 中文名是用户数据包协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。2.文件传输流程2.1在此使用UDP协议传送文件的程序中,先在服务器端设定监听端口号(3666),在接收客户端发来的请求之前一直处于阻塞状态;在客户端则从本地读取二进制文件并封装成数据报,并发送到相应的服务器端(ip:127.0.0.1,端口:3666);当服务器端接收到客户端发来的请求后,则对数据进行处理,即读取并保存数据,然后返回操作后的信息到客户端;当客户端接收

2、到服务器端的信息后,则输出服务器端返回的信息,到此时就完成了客户端的请求和服务器端的应答;最后关闭DatagramSocket。3.程序流程图Receive()接收到来自客户端的数据writeFile()Socket()readFile()sendTo()Receive()sendTo()客户端服务器端YN显示返回的信息Close()Socket()数据应答发送文件4.程序部分源码4.1 服务器端源码public class Server extends Thread DatagramSocket ds = null;DatagramPacket dp = null;File file = n

3、ull;Overridepublic void run() / TODO Auto-generated method stubtry / 设置端口为3666ds = new DatagramSocket(3666);while (true) byte buf = new byte1024 * 64;/ 用于接收长度为1024的数据包dp = new DatagramPacket(buf, buf.length);/ 从此套接字接收数据报包,此方法在接收到数据之前处于阻塞状态ds.receive(dp);/ 保存接收文件,文件名取系统当前时间long temp = System.currentT

4、imeMillis();this.saveFile(dp, temp + );/ 为使反馈过程效果明显,线程休眠2秒后发送回复信息Thread.sleep(2000);String message = server has received it.;DatagramPacket packet = new DatagramPacket(message.getBytes(),message.length(), InetAddress.getLocalHost(), 6666);/ 发送回复数据包ds.send(packet); catch (Exception e) e.printStackTra

5、ce();/* * 保存接收到的文件 * * param dp * param filePath 保存文件所在的路径 * throws IOException */private void saveFile(DatagramPacket dp, String filePath)throws IOException FileOutputStream fileOutputStream = new FileOutputStream(new File(filePath);fileOutputStream.write(dp.getData(), 0, dp.getData().length);fileO

6、utputStream.close();4.2客户端源码public class Client private DatagramSocket ds = null;private DatagramPacket dp = null;/* * 传输文件 * param filePath 文件所在路径 */public void TransmitFile(String filePath) try / 从本地读取文件byte data = this.readFile(filePath);ds = new DatagramSocket(6666);/ 封装数据报dp = new DatagramPacke

7、t(data, (int) data.length,InetAddress.getLocalHost(), 3666);/ 开始传输文件ds.send(dp);/ 接收从服务器回复的信息byte buf = new byte1024;dp = new DatagramPacket(buf, buf.length);ds.receive(dp);byte server = dp.getData();System.out.println(客户端-收到服务器返回的信息:n + new String(server,0,dp.getLength().trim(); catch (Exception e)

8、 e.printStackTrace(); finally ds.close();/* * 读取文件 * * param filePath * 文件路径 * return * throws IOException */public byte readFile(String filePath) throws IOException File file = new File(filePath);if (!file.exists() return null;InputStream inputStream = new FileInputStream(file);ByteArrayOutputStream out = new ByteArrayOutputStream(1024);byte data = new byte1024;int len = 0;while (len = inputStream.read(data) != -1) out.write(data, 0, len);byte ret = out.toByteArray();return ret;5.运行结果截图5.1服务器端开启后5.2 客户端启动后5.3客户端选择要发送的文件后5.4客户端点击“开始传送”按钮后5.4.1 服务器端显示5.4.2 客户端显示

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号