日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2025/3/20 编程问答 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络编程应用:基于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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。