客户端
package server1; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class Client { public static void main(String[] args) throws IOException { // 1,获取本地字节输入流读取上传的文件 FileInputStream file = new FileInputStream("C:\\Users\\Administrator\\Desktop\\cli\\322792.jpg"); // 2.创建套接字对象 Socket socket = new Socket("127.0.0.1",8881); // 3.使用套接字对象获取网络输出流 OutputStream outputStream = socket.getOutputStream(); // 4. 使用网络输出流输出数据 int len = 0; byte[] by = new byte[1024]; while ((len = file.read(by)) != -1){ outputStream.write(by,0,len); } socket.shutdownOutput(); // 5.使用套接字对象获取网络输入流读取服务器返回的数据 InputStream inputStream = socket.getInputStream(); // 6.使用网络输入流读取服务器返回的数据 while((len = inputStream.read(by)) != -1){ System.out.println(new String(by,0, len)); } file.close(); socket.close(); } }服务器端
package server1; import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.util.Random; public class ServerTest { public static void main(String[] args) throws IOException { // 1.服务器端监听端口生成ServerSocket对象 ServerSocket serverSocket = new ServerSocket(8881); // 2. 服务器端程序一直运行 while (true){ Socket accept = serverSocket.accept(); // 3.开启多线程提高效率 new Thread(){ @Override public void run() { // try 处理run异常 try{ // 4. 使用ServerSocket对象获取网络字节输入流 InputStream inputStream = accept.getInputStream(); // 5. 设置存放文件的File对象 File f = new File("C:\\Users\\Administrator\\Desktop\\server"); if (!f.exists()){ f.mkdirs(); } // 6. 生成文件名每次保存后文件名不重复 File fl = new File("Lm"+ System.currentTimeMillis()+ new Random().nextInt(99999) + ".jpg" ); // 7.创建服务器本地输出流 FileOutputStream fileOutputStream = new FileOutputStream(f + "\\" + fl); // 8.网络输入流读取数据 int len = 0; byte[] by = new byte[1024]; while ((len = inputStream.read(by)) != -1){ // 9.本地输出流保存数据 fileOutputStream.write(by,0,len); } // 10.获取服务器输出流 OutputStream outputStream = accept.getOutputStream(); // 11. 服务器输出流写出数据 outputStream.write("上传成功".getBytes()); // 12.关闭服务 fileOutputStream.close(); outputStream.close(); accept.close(); }catch (IOException e){ System.out.println(e); } } }.start(); } // 服务器一直运行不需要关闭 //serverSocket.close(); } }