Java網絡編程 - 客戶端向服務器端發送文件的簡單實現


1、Client

package cn.qi.Client;

import java.io.*;
import java.net.Socket;

public class Client {
    Socket clientSocket;
    Client() {
        // 建立連接到服務器端的socket
        try {
            clientSocket = new Socket("127.0.0.1", 5000);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void readFileAndSent() throws IOException {
        OutputStream os = clientSocket.getOutputStream();
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));

        // 讀文件
        String path = this.getClass().getClassLoader().getResource("./prop/text.txt").getPath();
        FileReader fr = new FileReader(path);
        BufferedReader br = new BufferedReader(fr);
        String str = null;
        while((str = br.readLine()) != null) {
            System.out.println(str);
            // 每讀一行,寫一行
            bw.write(str);
            // 獲取當前OS的換行符並寫入
            bw.write(System.getProperty("line.separator"));
            bw.flush();
        }

        // 關閉流
        bw.close();
        br.close();
        fr.close();

        clientSocket.close();
    }
}

 

2、Server

package cn.qi.Server;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    ServerSocket serverSocket;
    Server() {
        // 建立severSocket,監聽對應端口
        try {
            serverSocket = new ServerSocket(5000);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void readFileAndWrite() throws IOException {
        // 獲取寫入路徑
        String path = this.getClass().getClassLoader().getResource("./prop/").getPath();
        // 服務器端寫文件
        FileWriter fw = new FileWriter(path+"textSocket.txt");
        BufferedWriter bw = new BufferedWriter(fw);

        // 寫的內容來自網絡端
        while (true) {
            Socket socket = serverSocket.accept();
            InputStream is = socket.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String str = null;
            while((str = br.readLine()) != null) {
                // 讀到了客戶端發送的信息
                bw.write(str);
                // 獲取當前OS的換行符並寫入
                bw.write(System.getProperty("line.separator"));
                bw.flush();
            }

            // 關閉流
            br.close();

            socket.close();
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM