Java中Socket通信-客户端向服务端发送照片

155 篇文章 7 订阅

场景

Java中Socket通信-服务端和客户端双向传输字符串实现:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108488556

在上面实现服务端与客户端双向的通信传输字符串之后,客户端怎样向服务端发送照片。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

首先在服务端的java项目中新建一个接收照片的方法

    //服务端接收来自客户端发送的照片
    public static void getImageFromClient() throws IOException {
        byte[] byteArray = new byte[2048];
        ServerSocket serverSocket = new ServerSocket(8088);
        Socket socket = serverSocket.accept();

        InputStream inputStream = socket.getInputStream();
        int readLength = inputStream.read(byteArray);

        FileOutputStream imageOutputStream = new FileOutputStream(new File("D:\\badao.png"));
        while (readLength !=-1)
        {
            imageOutputStream.write(byteArray,0,readLength);
            readLength = inputStream.read(byteArray);
        }
        imageOutputStream.close();
        inputStream.close();
        socket.close();
        serverSocket.close();
    }

然后在main方法中调用该方法。

这里指定的照片的路径就是获取服务端发来之后存储的路径。

然后在客户端新建发送照片的方法

   //客户端发送照片到服务端
    public static void sendImageToServer() throws IOException {
        String imageFile = "C:\\Users\\admin6\\Desktop\\gzh.png";
        FileInputStream imageStream = new FileInputStream(new File(imageFile));
        byte[] byteArray = new byte[2048];

        System.out.println("socket begin =" + System.currentTimeMillis());
        Socket socket = new Socket("localhost",8088);
        System.out.println("socket end ="+System.currentTimeMillis());

        OutputStream outputStream = socket.getOutputStream();

        int readLength = imageStream.read(byteArray);
        while (readLength!=-1)
        {
            outputStream.write(byteArray,0,readLength);
            readLength = imageStream.read(byteArray);

        }
        outputStream.close();
        imageStream.close();
        socket.close();
    }

这里的图片路径是要发送给服务端的照片的路径。

然后在main方法中调用该方法。

首先运行服务端的main方法,然后运行客户端的main方法,之后去D盘下就会接收到bao.png这张照片了。

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,这是一个关于网络编程的技术问题,我可以回答。 Java Socket 和 ServerSocket 可以用于实现客户服务的网络通信。具体实现步骤如下: 1. 服务创建 ServerSocket 对象,并指定一个口号。用于监听客户的连接请求。 2. 客户创建 Socket 对象,并指定服务的 IP 地址和口号。用于发起连接请求。 3. 服务使用 accept() 方法接收客户连接并返回 Socket 对象。可以在循环一直等待客户的连接请求。 4. 服务客户通过 InputStream 和 OutputStream 进行数据的读写。 下面是 Java 代码示例: 服务代码: ``` try { // 创建 ServerSocket 对象 ServerSocket serverSocket = new ServerSocket(8888); while (true) { System.out.println("等待客户连接..."); // 监听客户的连接请求 Socket socket = serverSocket.accept(); System.out.println("客户已连接:" + socket.getInetAddress().getHostName()); // 读取客户发送过来的数据 InputStream inputStream = socket.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = bufferedReader.readLine()) != null) { System.out.println("客户发送的数据:" + line); } // 向客户发送数据 OutputStream outputStream = socket.getOutputStream(); PrintWriter printWriter = new PrintWriter(outputStream, true); printWriter.println("Hello, Client!"); // 关闭资源 bufferedReader.close(); inputStream.close(); printWriter.close(); outputStream.close(); socket.close(); } } catch (IOException e) { e.printStackTrace(); } ``` 客户代码: ``` try { // 创建 Socket 对象 Socket socket = new Socket("192.168.0.1", 8888); // 向服务发送数据 OutputStream outputStream = socket.getOutputStream(); PrintWriter printWriter = new PrintWriter(outputStream, true); printWriter.println("Hello, Server!"); // 读取服务发送过来的数据 InputStream inputStream = socket.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = bufferedReader.readLine()) != null) { System.out.println("服务发送的数据:" + line); } // 关闭资源 bufferedReader.close(); inputStream.close(); printWriter.close(); outputStream.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } ``` 以上便是使用 Java Socket 和 ServerSocket 实现客户服务网络通信的代码示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霸道流氓气质

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值