zoukankan      html  css  js  c++  java
  • TCP通信中文件上传多线程方法

    文件上传多线程方法

    创建一个Upload类,继承Runnable接口,并将Socket封装起来,构造方法有参构造和无参构造,再创建一个run方法,

    public class UPload implements Runnable {
        private Socket socket;
        
        public UPload() {
            super();
        }
        public UPload(Socket socket) {
            super();
            this.socket = socket;
        }
        public void run() {        
            try {
                //明确数据源
                InputStream in = socket.getInputStream();
                //明确目的地
                File file=new File("E:\io1127\picture");
                //如果文件不存在
                if(!file.exists()){
                    //那就创建文件
                    file.mkdirs();
                }
                //明确文件名
                String filename="oracle"+System.currentTimeMillis()+new Random().nextInt(9999)+".jpg";
                //明确目的地
                FileOutputStream fos=new FileOutputStream(file+File.separator+filename);
                //开始复制
                byte[] bytes=new byte[1024];
                int len=0;
                while((len=in.read(bytes))!=-1){
                    fos.write(bytes, 0, len);
                }
                //回复客户端
                //获取字节输出流
                OutputStream out=socket.getOutputStream();
                //发送内容
                out.write("收到".getBytes());    
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    public class Demo01 {
        public static void main(String[] args) throws IOException {
            //创建服务器对象,明确端口号
            ServerSocket server=new ServerSocket(8888);
            while(true){
                //与客户端连接
                Socket socket=server.accept();
                //创建线程明确线程任务并开启线程
                new Thread(new UPload(socket)).start();            
            }
    }

    客户端:

    public class TCPClient {
        //客户端
        public static void main(String[] args) throws UnknownHostException, IOException {
            // 创建客户端对象,明确服务器端的ip和端口号
         //此时只需要接入同一个网络中,并设置服务器IP地址,就可以上传文件了
    Socket socket=new Socket("127.0.0.1",8888); //明确数据源 FileInputStream fis=new FileInputStream("E:\io1127\a.jpg"); //明确目的地 OutputStream out=socket.getOutputStream(); int len=0; byte[] bytes=new byte[1024]; //开始复制 while((len=fis.read(bytes))!=-1){ out.write(bytes,0,len); } //告知服务器端结束,别读了 socket.shutdownOutput(); //接收服务器端的回复 //获取字节输入流 InputStream in=socket.getInputStream(); len=in.read(bytes); System.out.println("服务器端回复:"+new String(bytes,0,len)); //释放资源 socket.close(); } }

    上传文件只需要执行客户端就可以,可以同时多个客户端上传文件

  • 相关阅读:
    Java 运动模糊
    Efounds笔试
    Algorithms code
    Java 画图
    Java 笔记
    Java 对二值化图片识别连通域
    工厂模式
    数据库克隆
    SQL优化
    微信调起jssdk一闪而过
  • 原文地址:https://www.cnblogs.com/xinzong/p/14478194.html
Copyright © 2011-2022 走看看