作者:单莼de笑脸 | 来源:互联网 | 2024-11-03 18:08
通过采用用户数据报协议(UDP),本研究设计并实现了一种高效的文件传输方法。在发送端,系统利用Java编程语言中的相关类库,如`File`和`FileInputStream`,实现了文件的读取与分段处理,确保了数据的快速传输。该方法不仅提高了传输效率,还降低了网络拥塞的风险,适用于大规模文件传输场景。
发送端
package com.qf.demo4;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;public class Send {public static void main (String[] args) {DatagramSocket socket =null ;FileInputStream fis = null ;try {socket = new DatagramSocket();fis = new FileInputStream(new File("D:\\A.java" ));int num = 0 ;byte [] bs = new byte [1024 ];while ((num = fis.read(bs))!=-1 ){DatagramPacket packet = new DatagramPacket(bs, num, InetAddress.getLocalHost(), 5588 );socket.send(packet);}String string = "传输完毕" ;DatagramPacket packet = new DatagramPacket(string.getBytes(), string.getBytes().length,InetAddress.getLocalHost(), 5588 );socket.send(packet);} catch (SocketException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {if (socket!= null ){socket.close();}if (fis!=null ){try {fis.close();} catch (IOException e) {e.printStackTrace();}}}} }
接收端
package com.qf.demo4;import java.io.File;import java.io.FileOutputStream;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) { DatagramSocket socket = null ;FileOutputStream fos =null ;try {socket = new DatagramSocket(5588 );fos = new FileOutputStream(new File("a.java" ));while (true ){byte [] buf = new byte [1024 ];DatagramPacket packet = new DatagramPacket(buf, buf.length);socket.receive(packet);String string = new String(packet.getData(), 0 , packet.getLength());if ("传输完毕" .equals(string)){break ;}fos.write(packet.getData(), 0 , packet.getLength());fos.flush();}System.out.println("接收方接收数据完毕" );} catch (SocketException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {if (socket!= null ){socket.close();}if (fos!=null ){try {fos.close();} catch (IOException e) {e.printStackTrace();}}}} }