本文共 2297 字,大约阅读时间需要 7 分钟。
客户端:
package com.tencent.network;import java.io.*;import java.net.InetAddress;import java.net.Socket;public class FileClient { public static void main(String[] args) { try { // 建立连接 Socket socket = new Socket(InetAddress.getByName("127.0.0.1") , 9000); // 输出流 OutputStream os = socket.getOutputStream(); // 文件输入流 FileInputStream fs = new FileInputStream(new File("./file.out")); // 缓冲区 依次写入 输出流 byte[] buffer = new byte[1024]; int len = 0; while((len = fs.read(buffer)) != -1) { os.write(buffer , 0 , len); } //通知服务器 我传输完了! socket.shutdownOutput(); // 确认服务器接收完毕 输入流 InputStream is = socket.getInputStream(); ByteArrayOutputStream bo = new ByteArrayOutputStream(); byte[] buffer2 = new byte[1024]; int len2 = 0; while((len2 = is.read(buffer2)) != -1) { bo.write(buffer2 , 0 , len2); } System.out.println(bo.toString()); // 关闭资源 fs.close(); os.close(); socket.close(); } catch (Exception e ) { e.printStackTrace(); } }}
服务端:
package com.tencent.network;import java.io.*;import java.net.ServerSocket;import java.net.Socket;public class FileServer { public static void main(String[] args) { try { // 创建服务socket ServerSocket serverSocket = new ServerSocket(9000); // 阻塞式监听 会一直等待客户端发送信息 Socket socket = serverSocket.accept(); // 输入流 InputStream is = socket.getInputStream(); // 文件输出流 FileOutputStream fos = new FileOutputStream(new File("new")); //把文件的输出流到输入流去 int len = 0; byte[] buffer = new byte[1024]; while((len = is.read(buffer)) != -1) { fos.write(buffer , 0 , len); } OutputStream os = socket.getOutputStream(); os.write("我接收完毕了,你可以断开了".getBytes()); // 关闭资源 fos.close(); is.close(); socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } }}
转载地址:http://njpt.baihongyu.com/