Java 基于TCP Socket 實現文件上傳
更新時間:2020年12月11日 11:18:02 作者:weiQLog
這篇文章主要介紹了Java 基于TCP Socket 實現文件上傳的示例代碼,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
文件上傳過程一個單向Socket通信過程。客戶端通過文件輸入流讀取文件,然后從Socket獲取輸出流寫入數據。服務端從Socket中獲得輸入流,然后寫入文件輸出流,寫入數據完成則上傳完成。
服務端UploadServer:
public class UplaodServer {
public static void main(String []args){
try(
// 創(chuàng)建一個ServerSocket監(jiān)聽8080端口的請求
// ServerSocket 實現了 AutoCloseable接口, 可以自動釋放資源
ServerSocket server = new ServerSocket(8080);
// accept()會阻塞當前線程, 等待客戶端請求
Socket socket = server.accept();
// 獲取輸入流
BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
// 由文件輸出流創(chuàng)建緩沖輸出流, 寫入本地upload.jpg 文件
FileOutputStream outputStream = new FileOutputStream("./upload.jpg")
){
// 緩沖區(qū)
byte [] buffer = new byte[1024];
int len = in.read(buffer);
while(len != -1){
// 寫入數據到文件
outputStream.write(buffer, 0, len);
// 再次從Socket中讀取數據
len = in.read(buffer);
}
System.out.println("文件已上傳");
}catch (IOException e) {
e.printStackTrace();
}
}
}
客戶端UploadClient:
public class UploadClient {
public static void main(String []args){
try(
// Socket 實現了 AutoCloseable接口 可自動關閉資源
Socket socket = new Socket("127.0.0.1", 8080);
// 又Socket獲得輸出流, 并創(chuàng)建緩沖輸出流
BufferedOutputStream out = new BufferedOutputStream(socket.getOutputStream());
FileInputStream fileInput = new FileInputStream("F:\file\oxx6j5.jpg");
// 由文件輸入流創(chuàng)建緩沖輸入流
BufferedInputStream in = new BufferedInputStream(fileInputStream);
){
// 準備緩沖區(qū)
byte[] buffer = new byte[1024];
int len = in.read(buffer);
while (len != -1) {
// 寫入Socket
out.write(buffer, 0, len);
// 再次讀取文件
len = in.read(buffer);
}
System.out.println("上傳成功!");
}catch (ConnectException e) {
System.out.println("服務器未啟動");
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
注意
server.accept()會阻塞線程,所以最好把server.accept()語句放入子線程中。
以上就是Java 基于TCP Socket 實現文件上傳的詳細內容,更多關于Java 文件上傳的資料請關注腳本之家其它相關文章!
相關文章
Java 下數據業(yè)務邏輯開發(fā)技術 JOOQ 和 SPL
這篇文章主要為大家介紹了Java 下數據業(yè)務邏輯開發(fā)技術 JOOQ 和 SPL詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09
Netty分布式pipeline管道Handler的刪除邏輯操作
這篇文章主要為大家介紹了Netty分布式pipeline管道Handler的刪除邏輯操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-03-03

