Java 网络编程 之 UDP 文件传输

http://www.verejava.com/?id=16994922158226

服务器端 
package com.udp;

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

public class UDPTextFileServer
{
    public static void main(String[] args)
    {
        OutputStream os=null;
        DatagramSocket ds=null;
        try
        {
            ds=new DatagramSocket(9001);
            System.out.println("在9001端口监听...");
            
            byte[] b=new byte[1024];
            DatagramPacket dp=new DatagramPacket(b,0,b.length);

            ds.receive(dp);
            byte[] data=dp.getData();
            os=new FileOutputStream(new File("text.txt"));
            os.write(data, 0, dp.getLength());
            System.out.println("文件接收成功");
        } catch (SocketException e)
        {
            e.printStackTrace();
        } catch (IOException e)
        {
            e.printStackTrace();
        }
        finally
        {
            try
            {
                os.close();
                ds.close();
            } catch (IOException e)
            {
                e.printStackTrace();
            }
            
        }
    }
}





客户端 
package com.udp;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

public class UDPTextFileClient
{
    public static void main(String[] args)
    {
        DatagramSocket ds=null;
        InputStream is=null;
        try
        {
            ds=new DatagramSocket(9000);
            System.out.println("客户端在 9000 监听");
            
            is=new FileInputStream(new File("text.txt"));
            
            byte[] b=new byte[is.available()];
            is.read(b);
            
            DatagramPacket dp=new DatagramPacket(b,0,b.length);
            dp.setPort(9001);
            dp.setAddress(InetAddress.getByName("192.168.2.102"));
            
            ds.send(dp);
            System.out.println("文件发送成功");
        } catch (SocketException e)
        {
            e.printStackTrace();
        } catch (IOException e)
        {
            e.printStackTrace();
        }
        finally
        {
            try
            {
                is.close();
                ds.close();
            } catch (IOException e)
            {
                e.printStackTrace();
            }
            
        }
    }
}

http://www.verejava.com/?id=16994922158226

猜你喜欢

转载自www.cnblogs.com/verejava/p/9232105.html