上传图片的功能

需求:客户端上传图片到服务端

思路:

  • 客户端
    1.建立socket服务端点
    2.读取客户端已有的图片数据
    3.通过socket输出流将数据发给服务端
    4.读取服务端反馈信息
    5.关闭
  • 服务端
    1.建立socket服务端点
    2.接收客户端消息
    3.将收到的数据写入到新的图片中
    4.给客户端反馈
    5.关闭

客户端代码:

class UploadPicClient 
{
    public static void main(String[] args) throws Exception
    {
        Socket s = new Socket("192.168.1.234",10086);//1.建立服务端点
        FileInputStream fis = new FileInputStream("d:\\1.bmp");//读取客户端的图片
        OutputStream os = s.getOutputStream();//通过socket输出流将数据发给服务端
        byte[] bt =new byte[1024];//建立一个缓冲区
        int len = 0;
        while((len=fis.read(bt))!=-1)
        {
            os.write(bt, 0, len);//循环读取图片里面的数据写入缓冲区
        }
        s.shutdownOutput();//通知服务端数据已写完
        
        InputStream is = s.getInputStream();//建立输入流读取服务端响应信息
        byte[] btin = new byte[1024];
        int length = is.read(btin);
        System.out.println(new String(btin,0,length));
        fis.close();
        s.close();
    }
}

服务端代码:

class UploadPicSever
{
    public static void main(String[] args) throws Exception
    {
        ServerSocket ss = new ServerSocket(10086);//监听端口
        Socket s = ss.accept();//接收客户端消息
        InputStream is = s.getInputStream();
        FileOutputStream fos = new FileOutputStream("2.bmp");//保存为2.bmp
        byte[] bt = new byte[1024];
        int len = 0;
        while ((len=is.read(bt))!=-1)
        {
            fos.write(bt,0,len);//循环写入缓冲区直到客户端终止传输
        }
        OutputStream os = s.getOutputStream();
        os.write("上传图片成功".getBytes());
        fos.close();
        s.close();
        ss.close();
    }   
}

运行后检查图片上传成功

上传图片的功能_第1张图片
image.png

你可能感兴趣的:(上传图片的功能)