zoukankan      html  css  js  c++  java
  • TCP客户端图片上传服务端保存本地示例

    //TCP客户端
    public
    class TCPClient { public static void main(String[] args)throws IOException { Socket socket = new Socket("127.0.0.1",8888); OutputStream out = socket.getOutputStream(); FileInputStream fis = new FileInputStream("d:\jay.jpg"); byte[] data = new byte[1024]; int len = 0; while((len = fis.read(data)) != -1){ out.write(data,0,len); } //给服务器写终止序列 socket.shutdownOutput(); //得到的回应 InputStream in = socket.getInputStream(); len = in.read(data); System.out.println(new String(data,0,len)); //关闭资源 fis.close(); socket.close(); } }

    TCP服务端:

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Random;
    
    public class TCPServer {
    
        public static void main(String[] args) throws IOException{
            ServerSocket server = new ServerSocket(8888);
            Socket socket = server.accept();
            //处理客户端传来的文件流
            InputStream in = socket.getInputStream();
            File upload = new File("d:\upload");
            if(!upload.exists()){
                upload.mkdir();
            }
            String filename = "taobao" + System.currentTimeMillis() + new Random().nextInt(999999) +".jpg";
            FileOutputStream fos = new FileOutputStream(upload+File.separator+filename);
            int len = 0;
            byte[] data = new byte[1024];
            while((len = in.read(data)) != -1){
                fos.write(data,0,len);
            }
    
            //回复客户端
            socket.getOutputStream().write("上传成功!".getBytes());
            
            //关闭流资源
            fos.close();
            socket.close();
            server.close();
        }
    
    }

     进阶:(多线程图片上传服务)

    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class TCPThreadServer {
    
        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();            
            }
        }
    
    }

    TCP服务端代码封装到 run 方法中

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Random;
    
    public class Upload implements Runnable{
        private static Socket socket;
        
        public Upload(Socket socket){
            this.socket = socket;
        }
        
        public void run(){
            try{
                //处理客户端传来的文件流
                InputStream in = socket.getInputStream();
                File upload = new File("d:\upload");
                if(!upload.exists()){
                    upload.mkdir();
                }
                String filename = "itcast" + System.currentTimeMillis() + new Random().nextInt(999999) +".jpg";
                FileOutputStream fos = new FileOutputStream(upload+File.separator+filename);
                int len = 0;
                byte[] data = new byte[1024];
                while((len = in.read(data)) != -1){
                    fos.write(data,0,len);
                }
    
                //回复客户端
                socket.getOutputStream().write("上传成功!".getBytes());
                
                //关闭流资源
                fos.close();
                socket.close();
            }catch(Exception ex){}
            
        }
    }
  • 相关阅读:
    使用 suspend 和 resume 暂停和恢复线程
    在 Go 语言中使用 Session(一)
    理解Cookie和Session
    Go Iris 中间件
    Go 通道(channel)与协程间通信
    Java终止线程的三种方式
    Go http包执行流程
    Java项目服务器跨域设置
    mysql5.7初始化密码报错 ERROR 1820 (HY000): You must reset your password using ALTER USER statement before
    记录下在阿里云linux上安装与配置Mysql
  • 原文地址:https://www.cnblogs.com/ivan5277/p/10139979.html
Copyright © 2011-2022 走看看