TCP实例传输文件(JAVA)

客户端

  1. 连接服务端。

    //连接服务端
     Socket socket = new Socket(InetAddress.getByName("127.0.0.1"), 9000);
  1. 得到服务端socket中的输出流。

    //自定义一个输出流
    kOutputStream os = socket.getOutputStream();
  1. 读取文件(套接流)。

    FileInputStream fis = new FileInputStream(new File("res/touxiang.jpg"));
    
  1. 写出文件。

    byte[] buffer = new byte[1024];
    int len;
    while ((len=fis.read(buffer))!=-1){
     os.write(buffer,0,len);
    }
  1. 通知服务器我已经结束了。

     socket.shutdownOutput();//我已经传输完了
    
  1. 通知服务端接收完完毕,才能断开连接。

    InputStream inputStream = socket.getInputStream();
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    byte[] bytes = new byte[1024];
    int len1;
    while ((len1=inputStream.read(bytes))!=-1){
     baos.write(bytes,0,len1);
    }
    
    System.out.println(baos.toString());
  1. 关闭资源

            baos.close();
            inputStream.close();
            fis.close();
            os.close();
            socket.close();

服务端

  1. 创建一个端口号。

    ServerSocket serverSocket = new ServerSocket(9000);
  1. 监听客户端的信息。

      Socket socket = serverSocket.accept();
  1. 获取输入流。

     InputStream is = socket.getInputStream();
  1. 文件输出。

     FileOutputStream yunxia = new FileOutputStream(new File("yunxia.jpg"));
    byte[] bytes = new byte[1024];
    int len;
    while ((len=is.read(bytes))!=-1){
     yunxia.write(bytes,0,len);
    }
  1. 通知客户端我接收完毕了。

     OutputStream outputStream = socket.getOutputStream();
            outputStream.write("我接受完毕了,你可以断开了".getBytes());
            System.out.println();
            outputStream.close();
            yunxia.close();
            is.close();
            socket.close();
            serverSocket.close();
Last modification:February 13th, 2020 at 08:32 pm
如果觉得我的文章对你有用,请随意赞赏