1. 程式人生 > 實用技巧 >TCP 傳輸檔案

TCP 傳輸檔案

客戶端程式碼

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();
        }
    }
}