程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 使用TCP完成圖片並發上傳java實現

使用TCP完成圖片並發上傳java實現

編輯:關於JAVA
 

使用TCP完成圖片並發上傳,圖片文件上傳只能用字節流


TCP服務端:

  1. import java.io.FileOutputStream;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.io.OutputStream;
  5. import java.net.ServerSocket;
  6. import java.net.Socket;
  7. class Task implements Runnable {
  8. private Socket s = null;
  9. public Task(Socket s) {
  10. this.s = s;
  11. }
  12. public void run() {
  13. try {
  14. InputStream in = s.getInputStream();
  15. String ip = s.getInetAddress().getHostAddress();
  16. //獲取當前系統毫秒值
  17. long t = System.currentTimeMillis();
  18. FileOutputStream fos = new FileOutputStream(“E:/”+ip+”_”+ t+”.jpg”);
  19. int len = 0;
  20. byte[] buf = new byte[1024];
  21. while ((len = in.read(buf)) != -1) {
  22. fos.write(buf, 0, len);
  23. }
  24. // 存儲文件完成,向客戶端發送消息
  25. OutputStream os = s.getOutputStream();
  26. os.write(“上傳完成……”.getBytes());
  27. // 關閉流
  28. fos.close();
  29. os.close();
  30. } catch (Exception e) {
  31. e.printStackTrace();
  32. }
  33. }
  34. }
  35. public class TCPServer4 {
  36. public static void main(String[] args) throws IOException {
  37. // 創建服務端對象
  38. ServerSocket ss = new ServerSocket(8090);
  39. while (true) {
  40. // 獲取客戶端對象
  41. Socket s = ss.accept();
  42. // 獲取字節輸入流對象
  43. new Thread(new Task(s)).start();
  44. }
  45. }
  46. }

TCP客戶端:

  1. import java.io.FileInputStream;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.io.OutputStream;
  5. import java.net.Socket;
  6. public class TCPClient4 {
  7. public static void main(String[] args) throws IOException {
  8. //創建客戶端對象
  9. Socket s = new Socket(“127.0.0.1″,8090);
  10. //創建字節輸出流對象
  11. OutputStream os = s.getOutputStream() ;
  12. //創建文件字節輸入流對象
  13. FileInputStream fis = new FileInputStream(“1.jpg”);
  14. int len = 0;
  15. byte[] buf = new byte[1024] ;
  16. while((len = fis.read(buf))!=-1){
  17. os.write(buf,0,len);
  18. }
  19. //關閉文件輸入流
  20. fis.close();
  21. //關閉輸出流,給服務端發送數據發送結束的標記
  22. s.shutdownOutput(); 
  23. //======文件上傳完畢=========
  24. //接收服務器返回的消息
  25. InputStream in = s.getInputStream() ;
  26. len = in.read(buf);
  27. System.out.println(new String(buf,0,len));
  28. //關閉客戶端對象
  29. s.close();
  30. }
  31. }
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved