java中客户端与服务器端的数据传输

客户端代码:

//第一个参数代表服务端的IP地址,第二个参数代表需要访问的端口

Socket socket = new Socket("172.16.10.30", 3243);

向服务端发送数据:那么需要一个输出流:

OutputStream outputStream = socket.getOutputStream();

// 选择要向服务器发送的文件

 File file = new File("F:\\copy\\0001.jpg");

// 先把文件通过字节流的方式读入内存

FileInputStream fileInputStream = new FileInputStream(file);

// 开一个字节缓冲流

BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);

byte[] buffer = new byte[1024];

int len;

while ((len = bufferedInputStream.read(buffer)) != -1)

 {

//通过输出流把读入内存中的文件写出到服务器

    outputStream.write(buffer, 0, len);

  }

// 测试代码

 System.out.println("写出完成....");

 bufferedInputStream.close();

outputStream.close();

 socket.close();

温馨提示:作为参数的流,在最后可以不用关闭,因为在关闭对象的引用的时候,把参数中的流也关闭了。

服务器端:

// 提示代码

System.out.println("服务器正在开启,请等候...");

//在服务器开一个端口号:

ServerSocket serverSocket = new ServerSocket(3243);

// 服务器端获取客户端的请求

Socket socket = serverSocket.accept();

// 开一个字节输入流;这里的文件类型和客户端的文件类型保持一致:可以是文件,视频,图片等

File file = new File("F:\\0003.jpg");

//开一个文件输出流,在服务器读接收客户端文件的同时,写出到指定路径地址

FileOutputStream fileOutputStream = new FileOutputStream(file);

//通过字节缓冲流来实现,

BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);

//获取一个字节输入流

InputStream inputStream = socket.getInputStream();

// 开一个字节缓冲流

BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);

int len;

byte[] buffer = new byte[1024];

while ((len = bufferedInputStream.read(buffer)) != -1)

 {

      bufferedOutputStream.write(buffer, 0, len);

   }

        // 测试代码

System.out.println("接收完成...");

bufferedInputStream.close();

 bufferedOutputStream.close();

fileOutputStream.close();

socket.close();

你可能感兴趣的:(java中客户端与服务器端的数据传输)