Server & Client
Utils.java
package den; import java.io.*; import java.nio.charset.StandardCharsets; public class Utils{ public static byte[] streamToByteArray(InputStream inputStream) throws IOException{ ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); byte[] buf = new byte[1024]; int len; while((len = inputStream.read(buf)) != -1){ byteArrayOutputStream.write(buf, 0, len); } byte[] bytes = byteArrayOutputStream.toByteArray(); byteArrayOutputStream.close(); // inputStream.close(); 会引起相关socket关闭 return bytes; } public static String streamToString(InputStream inputStream) throws IOException{ BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); String line; StringBuilder stringBuilder = new StringBuilder(); while((line = bufferedReader.readLine()) != null){ stringBuilder.append(line).append("\n"); } // inputStream.close(); return stringBuilder.toString(); } }
UploadServer.java
package den; import java.io.*; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; public class UploadServer{ public static void main(String[] args) throws IOException{ ServerSocket serverSocket = new ServerSocket(5555, 2048, InetAddress.getLocalHost()); System.out.println("serverSocket.getLocalSocketAddress() = " + serverSocket.getLocalSocketAddress()); Socket socket = serverSocket.accept(); InputStream inputStream = socket.getInputStream(); byte[] bytes = Utils.streamToByteArray(inputStream); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream("src/p.png")); bufferedOutputStream.write(bytes); OutputStream outputStream = socket.getOutputStream(); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream)); bufferedWriter.write("server aa\n"); bufferedWriter.write("server bb\n"); bufferedWriter.newLine(); bufferedWriter.flush(); bufferedOutputStream.close(); bufferedWriter.close(); inputStream.close(); outputStream.close(); socket.close(); serverSocket.close(); // FileInputStream fileInputStream = new FileInputStream("src/img.png"); // byte[] bytes = Utils.streamToByteArray(fileInputStream); // FileInputStream fileInputStream = new FileInputStream("src/b.properties"); // String s = Utils.streamToString(fileInputStream); // System.out.println("s = " + s); } }
UploadClient.java
package den; import java.io.*; import java.net.InetAddress; import java.net.Socket; public class UploadClient{ public static void main(String[] args) throws IOException{ Socket socket = new Socket(InetAddress.getLocalHost(), 5555); FileInputStream fileInputStream = new FileInputStream("src/img.png"); byte[] bytes = Utils.streamToByteArray(fileInputStream); OutputStream outputStream = socket.getOutputStream(); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream); bufferedOutputStream.write(bytes); socket.shutdownOutput(); InputStream inputStream = socket.getInputStream(); String s = Utils.streamToString(inputStream); System.out.println(s); bufferedOutputStream.close(); socket.close(); } }