上传服务器(多线程)

Posted 淅沥沥丶下雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了上传服务器(多线程)相关的知识,希望对你有一定的参考价值。

package demo05;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;

public class UPload implements Runnable {
    private Socket s;
    private FileOutputStream fos;

    public UPload(Socket s) {
        this.s = s;
    }

    public void run() {
        try {
            // 3.获取输入流
            InputStream in = s.getInputStream();
            // 4.获取文件夹,如果不存在就创建
            File f = new File("f:\aaa");
            if (!f.exists()) {
                f.mkdirs();
            }
            // 5.创建文件输出流
            String filename = "oracle" + System.currentTimeMillis() + new Random().nextInt(99999) + ".png";
            fos = new FileOutputStream(f + File.separator + filename);
            // 6.写入数据
            byte[] b = new byte[1024];
            int len = 0;
            while ((len = in.read(b)) != -1) {
                fos.write(b, 0, len);
            }
            
            // 服务器给客服端回复(上传成功)
            OutputStream out = s.getOutputStream();
            out.write("上传成功".getBytes());

        } catch (Exception ex) {
            
            ex.printStackTrace();
            
        } finally {
            
            try {
                // 释放资源
                fos.close();
                s.close();
            } catch (IOException e) {
                
                e.printStackTrace();
            }

        }

    }

}
package demo05;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class test {
    public static void main(String[] args) throws IOException {
        ServerSocket ser =new ServerSocket(8888);
        while(true){
        Socket s =ser.accept();
        UPload u =new UPload(s);
        Thread t =new Thread(u);
        t.start();
        }
        
    }
}

 

以上是关于上传服务器(多线程)的主要内容,如果未能解决你的问题,请参考以下文章

多部分上传在 QObject 中不起作用移动到线程

多线程 Thread 线程同步 synchronized

C++ vs2017 - libcurl - http请求 代码大全(请求数据,上传下载文件,多线程上传下载文件)

利用ftp多线程上传文件

多个用户访问同一段代码

线程学习知识点总结