作者:单莼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();}}}}
}