美文网首页
java 基于TCP协议的文件上传

java 基于TCP协议的文件上传

作者: 杨晓霞sherry | 来源:发表于2020-10-20 19:43 被阅读0次

    参考文档

    1.https://www.sxt.cn/Java_jQuery_in_action/ten-filebytestream.html
    2.https://www.sxt.cn/Java_jQuery_in_action/ten-bufferedbyte.html
    

    参考视频

    https://www.bilibili.com/video/BV1ct411n7oG?p=245
    

    1.代码功能

    客户端上传文件到服务器端
    

    2.学习重点

    1.文件字节流
    2.缓冲字节流
    

    3.客户端代码

    1.注意输入流是FileInputStream
    2.把客户端的输入流经过缓存数组读写入到客户端的输出流
    
    package com.sxt.tcp;
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    public class FileClient {
        public static void main(String[] args) throws UnknownHostException, IOException {
            //1.建立连接:使用Socket创建客户端+服务的地址和端口
            System.out.println("=================client================");
            Socket client=new Socket("localhost",8888);
            
            //2.操作:拷贝 上传
            InputStream is=new BufferedInputStream(new FileInputStream("src/ndl.png"));
            OutputStream os=new BufferedOutputStream(client.getOutputStream());
            byte[] flush=new byte[1024];
            int len=-1;
            while((len=is.read(flush))!=-1) {
                os.write(flush,0,len);
            }
            os.flush();
            //3.释放资源
            os.close();
            is.close();
            client.close();
        }
    }
    

    4.服务器端代码

    1.注意输出流是FileOutputStream
    2.把客户端的输出流经过缓存数组读写入到服务器端输出流 
    
    package com.sxt.tcp;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class FileServer {
       public static void main(String[] args) throws IOException {
            // 1.指定端口 使用ServerSocket创建服务器
           ServerSocket server=new ServerSocket(8888);
           
            // 2.阻塞式等待连接 accept
           Socket client=server.accept();
           System.out.println("一个客户端建立了连接");
           
           //3.操作:文件拷贝 存储
           InputStream is=new BufferedInputStream(client.getInputStream());
           OutputStream os=new BufferedOutputStream(new FileOutputStream("src/tcp.png"));
           
           byte[] flush=new byte[1024];
           int len=-1;
           while((len=is.read(flush))!=-1) {
               os.write(flush,0,len);
           }
           
           os.flush();
           os.close();
           is.close();
       }
    }
    

    相关文章

      网友评论

          本文标题:java 基于TCP协议的文件上传

          本文链接:https://www.haomeiwen.com/subject/vwrwpktx.html