栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java

Client类:

   public static void main(String[] args) throws IOException {
        Socket socket = new Socket("127.0.0.1",10010);
//        网络字节输入流,用来获取从服务器中传过来的数据(字节)
        InputStream in = socket.getInputStream();
//        网络字节输出流,用来获取向服务器中传输的数据
        OutputStream out = socket.getOutputStream();
//         本地输入流,使用转换流,如果服务器传的是字符,则使用转换流将字节转换成字符
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
//        打印流,PrintStream中的write可以发送字节,println可以发送字符。
        PrintStream ps = new PrintStream(out);
//        首先读取文件名字
        File file = new File("C:\Users\chenqingxv\Pictures\鞠婧祎.jpg");
//        再将文件名字先传给服务器
        ps.println(file.getName());
//        先不着急往下写,暂停接收消息,防止数据的丢失

        String information = br.readLine();
        System.out.println(information);
//        使用本地输入流读取文件
        FileInputStream fis = new FileInputStream("C:\Users\chenqingxv\Pictures\鞠婧祎.jpg");
//        设置缓冲数组
        byte[] bytes = new byte[1024*8];
        int len;
        while ((len = fis.read(bytes))!= -1){
//            使用网络输出流写到服务器中
            ps.write(bytes,0,len);
        }
//        给服务器一个结束标记,告诉服务器,文件已经传输完毕
        socket.shutdownOutput();
//        接收服务器传送过来的提示字符
        String s = br.readLine();
        System.out.println(s);

        fis.close();
        socket.close();
    }

Server类:

    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(10010);
        //线程池的创建
        ThreadPoolExecutor pool = new ThreadPoolExecutor(2, 5, 30, TimeUnit.SECONDS, new ArrayBlockingQueue<>(6));
//        服务器循环接收客户端的链接请求
        while (true) {
            Socket socket = serverSocket.accept();
            ThreadFile threadFile = new ThreadFile(socket);
            pool.submit(threadFile);
        }

Runnable继承类:

    private Socket socket;

    public ThreadFile(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {

        InputStream in = null;
        OutputStream out = null;
        String name= null;
        FileOutputStream fileOutputStream = null;
        //         本地输入流,使用转换流(转换成字符流)
        try {
            //        网络字节输入流,用来获取从客户端中传过来的数据(字节)
            in = socket.getInputStream();
            //        网络字节输出流,用来获取从客户端中传输的数据
            out = socket.getOutputStream();
            //            接收首先传过来的文件名字
            PrintStream ps = new PrintStream(out);
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            name = br.readLine();
//            接收名字结束,向客户端发送一个消息
            ps.println("可以开始了");
            //            使用UUID类随机一个名字
//        使用本地输出流向文件中写入数据
            fileOutputStream = new FileOutputStream("day14\upload\"+ UUID.randomUUID().toString()+"_"+name);
            byte[] bytes = new byte[1024*8];
            int len;
            while ((len = in.read(bytes))!=-1){
                fileOutputStream.write(bytes,0,len);
            }
            //        传输完成后给客户端一个提示
            ps.println("上传完成");
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                socket.close();
                fileOutputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/978971.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号