zoukankan      html  css  js  c++  java
  • Java中网络编程实现局域网图片上传

    Java中网络编程实现局域网图片上传

    实现步骤

    这其中省略了许多的细节过程:创建套接字,绑定端口和地址,流的封装/拆封装。

    • 找到文件
    • 提取文件数据
    • 设置接收方文件收取容器
    • 传送文件数据
    • 关闭相关的流
    实现细节(以实现服务器/客户端收发数据为例简单介绍)
    服务端
    • 初始化

      ServerSocket serverSocket = null; // 创建套接字
      InputStream inputStream = null; // 创建接收数据的流
      serverSocket = new ServerSocket(8800);
      
    • 等待连接

      Socket socket = serverSocket.accept(); // 监听客户端
      
    • 处理数据

      inputStream = socket.getInputStream(); // 获取客户端发来的数据
      byte[] bytes = new byte[1024]; // 由于储存客户端发来的数据
      
    • 收尾

    try {
        serverSocket.close();
        inputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    
    
    客户端
    • 创建连接

      Socket socket = new Socket("localhost", 8800);
      
    • 获取/发送数据

      String message = "Java网络编程";
      OutputStream outputStream = socket.getOutputStream();
      outputStream.write(message.getBytes(StandardCharsets.UTF_8));
      socket.shutdownOutput();
      
    • 关闭连接

      socket.close();
      outputStream.close();
      
    高级应用
    • 服务器
    package Network;
    
      import java.io.*;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class PictureServer {
        public static void main(String[] args) {
            ServerSocket serverSocket= null;
            Socket socket = null;
            InputStream inputStream = null;
            OutputStream outputStream = null;
            BufferedInputStream bufferedInputStream = null;
            BufferedOutputStream bufferedOutputStream = null;
            try {
                serverSocket = new ServerSocket(9999);
                socket = serverSocket.accept();
                inputStream = socket.getInputStream();
                bufferedInputStream = new BufferedInputStream(inputStream);
                outputStream = new FileOutputStream("3.png");
                bufferedOutputStream = new BufferedOutputStream(outputStream);
                bufferedOutputStream.write(bufferedInputStream.readAllBytes());
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                try {
                    serverSocket.close();
                    socket.close();
                    outputStream.close();
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
    
    • 客户端
    package Network;
      
      import java.io.*;
      import java.net.Socket;
      
      public class PictureClient {
          public static void main(String[] args) {
              Socket socket = null;
              InputStream inputStream = null;
              OutputStream outputStream = null;
              BufferedOutputStream bufferedOutputStream = null;
              BufferedInputStream bufferedInputStream = null;
              int read = 0;
              try {
                  socket = new Socket("localhost", 9999);
                  inputStream = new FileInputStream("img.png");
                  bufferedInputStream = new BufferedInputStream(inputStream);
                  outputStream = socket.getOutputStream();
                  bufferedOutputStream = new BufferedOutputStream(outputStream);
                  bufferedOutputStream.write(bufferedInputStream.readAllBytes());
                  socket.shutdownOutput();
              } catch (IOException e) {
                  e.printStackTrace();
              }finally {
                  try {
                      socket.close();
                      inputStream.close();
                      outputStream.close();
                  } catch (IOException e) {
                      e.printStackTrace();
                  }
              }
          }
      }
      
    
  • 相关阅读:
    .netcore 3.1高性能微服务架构:封装调用外部服务的接口方法--HttpClient客户端思路分析
    .netcore3.1 设置可跨域
    基于MMSE的预测
    概率模型
    [离散时间信号处理学习笔记] 15. 模拟信号的数字处理
    [离散时间信号处理学习笔记] 14. 多采样率信号处理
    [离散时间信号处理学习笔记] 13. 重采样
    [离散时间信号处理学习笔记] 12. 连续时间信号的离散时间处理以及离散时间信号的连续时间处理
    [离散时间信号处理学习笔记] 11. 连续时间信号的采样与重构
    [离散时间信号处理学习笔记] 10. z变换与LTI系统
  • 原文地址:https://www.cnblogs.com/JonnyJiang-zh/p/14408543.html
Copyright © 2011-2022 走看看