Java網絡編程-文件上傳案例-客戶端

Java網絡編程


## 文件上傳案例


### 客戶端
- 目的:讀取本地文件,上傳到服務器,讀取服務器回寫的數據
- 明確:
1. 數據源:c:\\\\1.jpg
2. 目的地:服務器
- 實現步驟:
1. 創建一個本地字節輸入流FileInputStream對象,構造方法中綁定要讀取的數據源
2. 創建一個客戶端Socket對象,構造方法中綁定服務器的IP地址和端口號
3. 使用Socket中的方法getOutputStream,獲取網絡字節輸出流OutputStream對象
4. 使用本地字節輸入流FileInputStream對象中的read方法讀取本地文件
5. 使用網絡字節輸出流OutputStream對象的write方法,把讀取到的文件上傳到服務器
6. 使用Socket中的方法getInputStream,獲取網絡字節輸入流InputStream對象
7. 使用網絡字節輸出流InputStream對象中的方法read讀取服務器回寫的數據
8. 釋放資源(FileInputStream,Socket)

<code>\timport java.io.FileInputStream;
\timport java.io.IOException;
\timport java.io.InputStream;
\timport java.io.OutputStream;
\timport java.net.Socket;
\t
\tpublic class TCPClient {
\t public static void main(String[] args) throws IOException {
\t //1. 創建一個本地字節輸入流FileInputStream對象,構造方法中綁定要讀取的數據源
\t FileInputStream fis = new FileInputStream("c:\\\\1.jpg");
\t //2. 創建一個客戶端Socket對象,構造方法中綁定服務器的IP地址和端口號

\t Socket socket = new Socket("127.0.0.1",8888);
\t //3. 使用Socket中的方法getOutputStream,獲取網絡字節輸出流OutputStream對象
\t OutputStream os = socket.getOutputStream();
\t //4. 使用本地字節輸入流FileInputStream對象中的read方法讀取本地文件
\t int len =0;
\t byte[] bytes = new byte[1024];
\t while ((len = fis.read(bytes)) != -1) {
\t //5. 使用網絡字節輸出流OutputStream對象的write方法,把讀取到的文件上傳到服務器
\t os.write(bytes,0,len);
\t }
\t /*
\t 解決:上傳完文件給服務器寫一個結束標誌
\t shutdownOutput() 禁用此套接字的輸出流。
\t */
\t socket.shutdownOutput();
\t //6. 使用Socket中的方法getInputStream,獲取網絡字節輸入流InputStream對象
\t InputStream is = socket.getInputStream();
\t //7. 使用網絡字節輸出流InputStream對象中的方法read讀取服務器回寫的數據
\t
\t while ((len = is.read(bytes)) != -1) {
\t System.out.println(new String(bytes,0,len));
\t }
\t //8. 釋放資源(FileInputStream,Socket)
\t fis.close();
\t socket.close();
\t }
\t}
/<code>


分享到:


相關文章: