网络编程(4)用TCP实现图片上传

分析:

客户端:要求你从c盘下获取一张图片

服务器:收到客户端的获取图片,并保存到一个文件夹中。

数据源:C盘的图片

数据目的:服务器

/*
 * 实现TCP图片上传客户端
 * 1、Socket连接服务器,连不上啥也不说了
 * 2、通过Socket获取字节输出流,写图片
 * 3、使用自己的流对象读取图片数据源
 * 4、读取图片将图片写到服务器,采取字节缓冲流提高效率
 * 5、使用Socket获得服务器上的反馈
 * 6、关闭资源
 * 
 * */
public class PicClient {
    public static void main(String[] args) throws IOException, IOException {
        Socket socket=new Socket("127.0.0.1",8000);
        OutputStream outputStream=socket.getOutputStream();
        FileInputStream fileInputStream=new FileInputStream("C:\\word\\1.jpg");
        int len=0;
        byte[]data=new byte[1024];
        while ((len=fileInputStream.read(data))!=-1) {
            outputStream.write(data,0,len);
        }
        //给服务器写一个终止序列
        socket.shutdownOutput();
        
        InputStream inputStream=socket.getInputStream();
        
        len=inputStream.read(data);
        System.out.println(new String(data,0,len));
        fileInputStream.close();
        socket.close();
    }
}

 

=========================================================================

 

/*
 *TCP服务器程序
 *1、使用ServerSocket套接字对象,监听端口8000
 *2、accept()接受客户端的链接对象
 *3、客户端连接对象获取字节输入流,读取图片
 *4、创建FIle对象,绑定文件夹,如果不存在文件夹就新建文件夹
 *5、读取图片,将上传成功写回客户端
 *关闭资源 
 * */
public class PicServer {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket=new ServerSocket(8000);
        Socket socket=serverSocket.accept();
        InputStream inputStream=socket.getInputStream();
        
        File upload=new File("E:\\upload");
        if (!upload.exists()) {
            upload.mkdirs();
        }
        //创建字节输出流,写入文件夹
        //防止文件重名,域名+毫秒值
        String filename="lee"+System.currentTimeMillis()+new Random().nextInt(9999)+".jpg";
        FileOutputStream fileOutputStream=new FileOutputStream(upload+File.separator+filename);
        //读写字节数组
        byte[]data=new byte[1024];
        int len;
        while ((len=inputStream.read(data))!=-1) {
            fileOutputStream.write(data,0,len);
        }
        //关闭资源
        socket.getOutputStream().write("上传成功".getBytes());
        fileOutputStream.close();
        socket.close();
    }
}
 

你可能感兴趣的:(网络编程(4)用TCP实现图片上传)