#######################################
客戶端java
###UploadPicClient.java public class UploadPicClient { /** * @param args * @throws IOException * @throws */ public static void main(String[] args) throws IOException { System.out.println("上傳圖片客戶端運行......"); //1,建立socket。 Socket s = new Socket("192.168.1.223", 10007); //2,讀取源圖片。 File picFile = new File("tempfile\\1.jpg"); FileInputStream fis = new FileInputStream(picFile); //3,目的是socket 輸出流。 OutputStream out = s.getOutputStream(); byte[] buf = new byte[1024]; int len = 0; while((len=fis.read(buf))!=-1){ out.write(buf,0,len); } //告訴服務器端圖片數據發送完畢,不要等着讀了。 s.shutdownOutput(); //讀取上傳成功字樣。 InputStream in = s.getInputStream(); byte[] bufIn = new byte[1024]; int lenIn = in.read(bufIn); System.out.println(new String(bufIn,0,lenIn)); //關閉。 fis.close(); s.close(); } }
##################################################################
服務端服務器
###UploadPicServer.java public class UploadPicServer { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { System.out.println("上傳圖片服務端運行......"); // 建立server socket 。 ServerSocket ss = new ServerSocket(10007); while (true) { // 獲取客戶端。 Socket s = ss.accept(); //實現多個客戶端併發上傳,服務器端必須啓動作個線程來完成。 new Thread(new UploadPic(s)).start(); } } }
###UploadPic.java public class UploadPic implements Runnable { private Socket s; public UploadPic(Socket s) { this.s = s; } @Override public void run() { try { String ip = s.getInetAddress().getHostAddress(); System.out.println(ip + ".....connected"); // 讀取圖片數據。 InputStream in = s.getInputStream(); // 寫圖片數據到文件。 File dir = new File("e:\\uploadpic"); if (!dir.exists()) { dir.mkdir(); } // 爲了不覆蓋,經過給重名的文件進行編號。 int count = 1; File picFile = new File(dir, ip + "(" + count + ").jpg"); while (picFile.exists()) { count++; picFile = new File(dir, ip + "(" + count + ").jpg"); } FileOutputStream fos = new FileOutputStream(picFile); byte[] buf = new byte[1024]; int len = 0; while ((len = in.read(buf)) != -1) { fos.write(buf, 0, len); } // 給客戶端一個回饋信息。 OutputStream out = s.getOutputStream(); out.write("上傳成功".getBytes()); // 關閉資源。 fos.close(); s.close(); } catch (IOException e) { } } }