zoukankan      html  css  js  c++  java
  • [Socket]Socket文件传输

    1、Server

    import java.io.DataInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class Server
    {
        private ServerSocket serverSocket;
    
        private DataInputStream in;
    
        private FileOutputStream out;
    
        public Server(int port) throws IOException
        {
            serverSocket = new ServerSocket(8899);
        }
    
        public void receiveFile(String destFile) throws IOException
        {
            Socket socket = serverSocket.accept();
            DataInputStream in = new DataInputStream(socket.getInputStream());
            
            out = new FileOutputStream(destFile);
            int length = in.readInt();
            System.out.println("receiveLength:"+length);
    
            byte[] buffer = new byte[2048];
            int end = 0;
            while ((end = in.read(buffer)) > 0)
            {
                out.write(buffer, 0, end);
                out.flush();
            }
        }
        public void close()
        {
            try{
                try{
                    if (in != null) in.close();
                }
                finally{
                    try{
                        if (out != null) out.close();
                    }
                    finally{
                        serverSocket.close();
                    }
                }
            }catch (IOException e){
                // ignore
            }
    
        }
    
        public static void main(String[] args) throws IOException
        {
            Server server = new Server(8899);
            try{
                server.receiveFile("c:/dest.txt");
            }finally{
                server.close();
            }
        }
    }

    2、Client

    import java.io.DataOutputStream;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    public class Client
    {
        private Socket socket;
    
        private FileInputStream input;
    
        private DataOutputStream output;
    
        public Client(String IP, int port) throws UnknownHostException, IOException
        {
            this.socket = new Socket(IP, port);
            output = new DataOutputStream(socket.getOutputStream());
        }
    
        public void sendFile(String fileName) throws IOException
        {
            input = new FileInputStream(fileName);
            // 获得文件长度
            int fileLength = input.available();
            System.out.println("file length:" + fileLength);
            output.writeInt(fileLength);
            // 读取文件,写入socket
            byte[] buffer = new byte[2048];
            int bufferLength = 0;
            while ((bufferLength = input.read(buffer)) > 0)
            {
                output.write(buffer, 0, bufferLength);
            }
        }
    
        public void close()
        {
            try{
                try{
                    if (input != null) input.close();
                }
                finally{
                    try{
                        if (output != null) output.close();
                    }
                    finally{
                        socket.close();
                    }
                }
            }catch (IOException e){
                // ignore
            }
    
        }
    
        public static void main(String[] args) throws UnknownHostException, IOException
        {
            Client client = new Client("127.0.0.1", 8899);
            try
            {
                client.sendFile("c:/src.txt");
            }
            finally
            {
                client.close();
            }
        }
    }
  • 相关阅读:
    springboot 登录实现源代码解析
    Jmeter 在 beanshell 脚本中写日志
    JMETER 使用JDBC查找数据作为参数
    【驱动】linux下I2C驱动架构全面分析
    【驱动】linux系统下nand flash驱动程序框架
    【驱动】总线设备框架
    【驱动】按键中断异步通知实现
    【驱动】input子系统整体流程全面分析(触摸屏驱动为例)
    【驱动】input子系统全面分析
    【socket】小项目-智能点餐系统
  • 原文地址:https://www.cnblogs.com/jfqiu/p/3242863.html
Copyright © 2011-2022 走看看