UDP發送文件


接收端

package com.zy.demo2;

import java.io.File;
import java.io.FileOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class UDPReceive {

    public static void main(String[] args) throws Exception {
        //1創建碼頭
        DatagramSocket datagramSocket = new DatagramSocket(9999);//雙方約定的
        
        
        //2創建集裝箱
//        byte b[]=new byte[1024];//空的字節數組
//        DatagramPacket datagramPacket = new DatagramPacket(b, b.length);
//        
//        
//        //3收貨
//        datagramSocket.receive(datagramPacket);//線程阻塞!!!(沒收到時)        
    
        
        
        //-----------------------------
        byte[] aa = new byte[1];
        
        
        
        FileOutputStream fileOutputStream = new FileOutputStream(new File("E:\\接收的文件\\1.png"));
        
        do {
            DatagramPacket datagramPacket = new DatagramPacket(aa, 0, aa.length);
            if(datagramPacket.getLength()!=1){
                break;
            }
            datagramSocket.receive(datagramPacket);
            System.out.println(datagramPacket.getLength());
            fileOutputStream.write(datagramPacket.getData());
        } while (true);
        System.out.println("接收完成");
        //---------------------------------------
        //4查看貨物
//        System.out.println(new String(b));
        
        //5釋放資源
        datagramSocket.close();
    }

}

發送端

package com.zy.demo2;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException;

public class UDPSend {

    public static void main(String[] args) throws Exception {
        
        //1創建碼頭
        DatagramSocket datagramSocket = new DatagramSocket();
        //2創建集裝箱
//        String data="中國食用油";
//        byte[] bytes = data.getBytes();
        
        
        //3發送數據
        //根據名字獲取主機(機器互聯)
        InetAddress byName = InetAddress.getByName("192.168.219.61");//getByName("127.0.0.1")也可以寫ip,不一定非得是主機名
        
//        DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length, byName, 9999);    
                
//        datagramSocket.send(datagramPacket);
    
        byte bb[]=new byte[1];//udp容易丟包,為了降低損失,字節數組調整小些         FileInputStream fileInputStream = new FileInputStream(new File("E:\\13.png"));
        int read = fileInputStream.read(bb);
        
        while(read!=-1){
            DatagramPacket datagramPacket = new DatagramPacket(bb, bb.length, byName, 9999);    
            datagramSocket.send(datagramPacket);
            read = fileInputStream.read(bb);
        }
     
        //4釋放資源
        datagramSocket.close();
  
    }

}

程序一個bug:接收端接收完數據時JVM還在運行着,找不到合適的方法讓退出JVM


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM