要求:

基于UDP协议实现文件下载

发送方–请求–接收方发送文件–发送方接收文件


代码:


发送方:

package Homework1;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;public class Send {public static void main(String[] args){System.out.println("发送者启动");DatagramSocket socket=null;FileOutputStream fos=null;try {//1.发送请求socket=new DatagramSocket();String string="请求下载文件...";DatagramPacket packet=new DatagramPacket(string.getBytes(), string.getBytes().length, InetAddress.getLocalHost(), 6635);socket.send(packet);//2.创建file对象,以及文件输出流File file=new File("b.txt");fos=new FileOutputStream(file);//3.接收文件byte[] buf=new byte[1024];while(true){DatagramPacket p=new DatagramPacket(buf, buf.length);socket.receive(p);String string2=new String(p.getData(), 0, p.getLength());//4.根据接收方发来的数据,判断文件是否传输完毕if(string2.equals("发送完毕")){break;}fos.write(string2.getBytes());fos.flush();}} catch (SocketException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(socket!=null){socket.close();}if(fos!=null){try {fos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
}

接收方:

package Homework1;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;public class Receive {public static void main(String[] args){System.out.println("接收者启动");DatagramSocket socket=null;FileInputStream fis=null;try {//1.创建Datagramsocket对象,相当于TCP中的Socketsocket=new DatagramSocket(6635);//2.创建Datagrampacket对象,用于装数据byte[] buf=new byte[1024];DatagramPacket packet=new DatagramPacket(buf, buf.length);//3.接收数据,收到发送方请求“下载文件”socket.receive(packet);System.out.println(new String(packet.getData(),0,packet.getLength()));//4.发送文件给--发送方File file=new File("a.txt");//要给发送方的文件fis=new FileInputStream(file);byte[] b=new byte[10];int count=0;while((count=fis.read(b))!=-1){DatagramPacket p=new DatagramPacket(b, count,packet.getAddress(),packet.getPort());socket.send(p);}//5.文件发送完后,给--发送方回复一句话String string="发送完毕";packet=new DatagramPacket(string.getBytes(), string.getBytes().length,packet.getAddress(),packet.getPort());socket.send(packet);} catch (SocketException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(socket!=null){socket.close();}if(fis!=null){try {fis.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}   }
}

运行结果:
发送方:

接收方:

网络编程应用:基于UDP协议【实现文件下载】--练习相关推荐

  1. java网络编程作业基于UDP简单聊天窗口,图形化界面,包含客户端和服务端

    //郑州轻工业大学 //题号:实验四 第二题 //题目:使用基于UDP的网络编程方法,完成客户端和服务器间的聊天功能.要求图形界面. java网络编程作业 基于UDP简单聊天窗口,图形化界面,包含客户 ...

  2. 网络编程4之UDP协议

    一.定义 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种[无 ...

  3. Sockey编程之基于 UDP 协议的 Socket 编程

    一.基于 UDP 协议的 Socket 编程 1.端口选择 已知端口:0~1023,为固定服务保留. 已注册的端口:1024~49151,供普通用户的普通用户进程或程序使用. 动态或私用端口: 491 ...

  4. python web开发 网络编程 TCP/IP UDP协议

    文章目录 1. TCP/IP协议 1.1 IP协议 1.2 TCP协议 2. UDP协议 3. Socket 4. TCP编程 4.1 创建TCP服务器 4.2 创建TCP客户端 4.3 简易聊天工具 ...

  5. 网络编程 day03 (linux) UDP 协议的传输 与函数 getsockopt setsockopt sendto(经socket传送数据)recvfrom

    1.UDP协议的特点 UDP(User Datagram Protocol)用户数据报协议,是不可靠的无连接的协议.在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输. 适用情况: 1.发 ...

  6. 网络编程及TCP/UDP协议

    网络编程 1.1.概述 地球村:你在西安,一个在美国 打电话--连接--接了--通话 TCP 发短信--发完了就完事了--接收 UDP(丢包) 计算机网络: 计算机网络系统就是利用通信设备和线路将地理 ...

  7. 【Linux网络编程】基于UDP实现多人聊天室

    文章目录 一.UDP的概念 1.1 UDP 1.2 UDP特点 二. 采用UDP实现多人聊天室原因 三.多人聊天室项目功能 四.实现多人聊天室项目流程分析 4.1 前期准备 4.1.1 定义结构体 4 ...

  8. Linux网络编程:基于UDP的程序开发回顾篇

    基于无连接的UDP程序设计 同样,在开发基于UDP的应用程序时,其主要流程如下: 对于面向无连接的UDP应用程序在开发过程中服务端和客户端的操作流程基本差不多.对比面向连接的TCP程序,服务端少了li ...

  9. 【QT网络编程】实现UDP协议通信

    文章目录 概要:本期主要讲解QT中对UDP协议通信的实现. 一.UDP协议通信 二.Qt中UDP协议的处理 1.QUdpSocket 三.Qt实现UDP通信 1.客户端 2.服务器端 结尾 概要:本期 ...

  10. 2、网络编程之基于UDP示例

    一.一些概念 套接字是表示了通信的端点. 网络通信中,使用"连接"作为最基本的抽象,同时将TCP连接的端点称为套接字.套接字=(IP,端口) 二.连接过程 服务器端(接收端)程序: ...

最新文章

  1. 《深入理解计算机系统-程序结构》读书笔记
  2. 【JVM调优】JVM的运行参数
  3. ubuntu下部署eclipse集成hadoop\android\web\GCC开发环境小记
  4. csv python 图片 存_Python|任意网页中的所有网址的保存
  5. arcgis server 10.4 安装与授权
  6. MySQL优化之三:SQL语句优化
  7. java时间api_什么是java时间API?
  8. MySQL索引使用详解
  9. 使用多个tomcat如何修改端口号
  10. 什么是好的虚拟化项目交付(转)
  11. caffe的python接口学习(3):训练模型(training)
  12. 破解内网火狐所保存的邮箱账号和密码
  13. android gc卡顿,由于频繁GC造成的界面卡顿原因分析
  14. C#创建文件,覆盖文件,读取文件
  15. vulhub漏洞复现- ActiveMQ 反序列化漏洞(CVE-2015-5254)
  16. 程序员,怎样打造个人影响力?
  17. 扁平化数组的几种方法
  18. 护眼色RGB的数值及在福昕阅读器上的设置方法
  19. java判断白天黑夜,获取Java中的所有夜晚时间
  20. 使用Python将mat文件转换为npy文件

热门文章

  1. R语言:预测算法常用包总结
  2. Hyperledger Besu(4)身份许可
  3. Crypto-Danciling line.(ascii 图像
  4. BUU——WMCTF2020 - easy_re
  5. 【Flask】Flask-RESTful 风格编程
  6. 图片爬取数据解析数据持久化
  7. 异常分发(内核异常)
  8. 渗透操作系统——【靶场实战训练营】快来看看有没有你需要的
  9. 1.22 实例:Java输出杨辉三角形(使用二维数组)
  10. 使用过滤器监控网站流量