java TCP通信 socket 套接字 用圖片上傳轟炸服務器
阿新 • • 發佈:2018-03-11
ack 服務器 dclient write tcp public AI 套接字 dcl
客戶端
package com.swift.jinji; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; /*項目需求:使用socket編寫一個Java程序,要求:實現客戶端上傳文件到服務端, 即客戶端讀取本地文本文件,將文件發送至服務端,服務端將接收到的內容存放到文本文件中。*/ public class UploadClient { staticint i = 1024; public static void main(String[] args) throws IOException, IOException { while (true) { if (i < 65535) { System.out.println(i); Socket s = new Socket("192.168.122.35", 20000); FileInputStream fis = new FileInputStream("d:/abc/0.jpg"); OutputStream out= s.getOutputStream(); byte[] buf = new byte[1024]; int len; while ((len = fis.read(buf)) != -1) { // 這個時候下面的套接字流write寫沒有寫-1,因為到-1就停了 out.write(buf, 0, len); } s.shutdownOutput(); InputStream in= s.getInputStream(); len = in.read(buf); System.out.println(new String(buf, 0, len)); } } } }
服務器端需開啟上傳接收客戶端socket才行
package com.swift.jinji; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class UploadServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(20000); while (true) { System.out.println("等待客戶端連接"); Socket s = serverSocket.accept(); System.out.println("有客戶端連接成功 " + s); byte[] buf = new byte[1024]; int len; File destDir = new File("d:/upload"); if (!destDir.exists()) { destDir.mkdirs(); } FileOutputStream fos = new FileOutputStream(new File(destDir, System.currentTimeMillis() + "_0.jpg")); InputStream in = s.getInputStream(); while ((len = in.read(buf)) != -1) { fos.write(buf, 0, len); } System.out.println("111111111111111"); OutputStream out = s.getOutputStream(); out.write("上傳成功".getBytes()); s.close(); } } }
效果就是,一瞬間會有數萬張圖片奔向服務器.
java TCP通信 socket 套接字 用圖片上傳轟炸服務器