TCP 傳輸檔案
阿新 • • 發佈:2020-12-08
客戶端程式碼
package com.xtsheng.TcpDemo; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; /** * @author zxa * @version 1.0 * @date 2020/12/8 19:46 */ public class TcpClientTest { public static void main(String[] args) { try { //建立socket連線 指定連線伺服器ip+埠 Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),9999); //獲取socket輸出流 將檔案讀取到輸出流進行傳輸 OutputStream os = socket.getOutputStream(); //獲取要被傳輸檔案的輸入流 將檔案寫入到輸出流中 FileInputStream fis = new FileInputStream(new File("zza.jpg")); byte[] bytes = new byte[1024]; int len; while ((len=fis.read(bytes))!=-1){ os.write(bytes,0,len); } //關閉連線 其實應該放到finally中 fis.close(); os.close(); socket.close(); } catch (Exception e) { e.printStackTrace(); } } }
服務端程式碼
package com.xtsheng.TcpDemo; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; /** * @author zxa * @version 1.0 * @date 2020/12/8 19:53 */ public class TcpServerTest { public static void main(String[] args) { try { //建立伺服器端socket 指定服務所在埠 ServerSocket serverSocket = new ServerSocket(9999); //獲取連線到伺服器端的socket Socket socket = serverSocket.accept(); //獲取socket輸入流 InputStream in = socket.getInputStream(); //指定寫入檔案的輸出流 寫入檔案 FileOutputStream fos = new FileOutputStream(new File("zzzz.jpg")); byte[] buffer = new byte[1024]; int len; while ((len=in.read(buffer))!=-1){ fos.write(buffer,0,len); } fos.close(); in.close(); socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } }