网络编程应用:基于UDP协议【实现文件下载】--练习
生活随笔
收集整理的這篇文章主要介紹了
网络编程应用:基于UDP协议【实现文件下载】--练习
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
要求:
基于UDP協(xié)議實(shí)現(xiàn)文件下載發(fā)送方–請(qǐng)求–接收方發(fā)送文件–發(fā)送方接收文件
代碼:
發(fā)送方:
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("發(fā)送者啟動(dòng)");DatagramSocket socket=null;FileOutputStream fos=null;try {//1.發(fā)送請(qǐng)求socket=new DatagramSocket();String string="請(qǐng)求下載文件...";DatagramPacket packet=new DatagramPacket(string.getBytes(), string.getBytes().length, InetAddress.getLocalHost(), 6635);socket.send(packet);//2.創(chuàng)建file對(duì)象,以及文件輸出流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.根據(jù)接收方發(fā)來(lái)的數(shù)據(jù),判斷文件是否傳輸完畢if(string2.equals("發(fā)送完畢")){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("接收者啟動(dòng)");DatagramSocket socket=null;FileInputStream fis=null;try {//1.創(chuàng)建Datagramsocket對(duì)象,相當(dāng)于TCP中的Socketsocket=new DatagramSocket(6635);//2.創(chuàng)建Datagrampacket對(duì)象,用于裝數(shù)據(jù)byte[] buf=new byte[1024];DatagramPacket packet=new DatagramPacket(buf, buf.length);//3.接收數(shù)據(jù),收到發(fā)送方請(qǐng)求“下載文件”socket.receive(packet);System.out.println(new String(packet.getData(),0,packet.getLength()));//4.發(fā)送文件給--發(fā)送方File file=new File("a.txt");//要給發(fā)送方的文件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.文件發(fā)送完后,給--發(fā)送方回復(fù)一句話String string="發(fā)送完畢";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();}}} } }運(yùn)行結(jié)果:
發(fā)送方:
接收方:
總結(jié)
以上是生活随笔為你收集整理的网络编程应用:基于UDP协议【实现文件下载】--练习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 网络编程4之UDP协议
- 下一篇: {网络编程}和{多线程}应用:基于UDP