网络编程应用:基于UDP协议【实现文件下载】--练习
要求:
基于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协议【实现文件下载】--练习相关推荐
- java网络编程作业基于UDP简单聊天窗口,图形化界面,包含客户端和服务端
//郑州轻工业大学 //题号:实验四 第二题 //题目:使用基于UDP的网络编程方法,完成客户端和服务器间的聊天功能.要求图形界面. java网络编程作业 基于UDP简单聊天窗口,图形化界面,包含客户 ...
- 网络编程4之UDP协议
一.定义 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种[无 ...
- Sockey编程之基于 UDP 协议的 Socket 编程
一.基于 UDP 协议的 Socket 编程 1.端口选择 已知端口:0~1023,为固定服务保留. 已注册的端口:1024~49151,供普通用户的普通用户进程或程序使用. 动态或私用端口: 491 ...
- 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 简易聊天工具 ...
- 网络编程 day03 (linux) UDP 协议的传输 与函数 getsockopt setsockopt sendto(经socket传送数据)recvfrom
1.UDP协议的特点 UDP(User Datagram Protocol)用户数据报协议,是不可靠的无连接的协议.在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输. 适用情况: 1.发 ...
- 网络编程及TCP/UDP协议
网络编程 1.1.概述 地球村:你在西安,一个在美国 打电话--连接--接了--通话 TCP 发短信--发完了就完事了--接收 UDP(丢包) 计算机网络: 计算机网络系统就是利用通信设备和线路将地理 ...
- 【Linux网络编程】基于UDP实现多人聊天室
文章目录 一.UDP的概念 1.1 UDP 1.2 UDP特点 二. 采用UDP实现多人聊天室原因 三.多人聊天室项目功能 四.实现多人聊天室项目流程分析 4.1 前期准备 4.1.1 定义结构体 4 ...
- Linux网络编程:基于UDP的程序开发回顾篇
基于无连接的UDP程序设计 同样,在开发基于UDP的应用程序时,其主要流程如下: 对于面向无连接的UDP应用程序在开发过程中服务端和客户端的操作流程基本差不多.对比面向连接的TCP程序,服务端少了li ...
- 【QT网络编程】实现UDP协议通信
文章目录 概要:本期主要讲解QT中对UDP协议通信的实现. 一.UDP协议通信 二.Qt中UDP协议的处理 1.QUdpSocket 三.Qt实现UDP通信 1.客户端 2.服务器端 结尾 概要:本期 ...
- 2、网络编程之基于UDP示例
一.一些概念 套接字是表示了通信的端点. 网络通信中,使用"连接"作为最基本的抽象,同时将TCP连接的端点称为套接字.套接字=(IP,端口) 二.连接过程 服务器端(接收端)程序: ...
最新文章
- 《深入理解计算机系统-程序结构》读书笔记
- 【JVM调优】JVM的运行参数
- ubuntu下部署eclipse集成hadoop\android\web\GCC开发环境小记
- csv python 图片 存_Python|任意网页中的所有网址的保存
- arcgis server 10.4 安装与授权
- MySQL优化之三:SQL语句优化
- java时间api_什么是java时间API?
- MySQL索引使用详解
- 使用多个tomcat如何修改端口号
- 什么是好的虚拟化项目交付(转)
- caffe的python接口学习(3):训练模型(training)
- 破解内网火狐所保存的邮箱账号和密码
- android gc卡顿,由于频繁GC造成的界面卡顿原因分析
- C#创建文件,覆盖文件,读取文件
- vulhub漏洞复现- ActiveMQ 反序列化漏洞(CVE-2015-5254)
- 程序员,怎样打造个人影响力?
- 扁平化数组的几种方法
- 护眼色RGB的数值及在福昕阅读器上的设置方法
- java判断白天黑夜,获取Java中的所有夜晚时间
- 使用Python将mat文件转换为npy文件