026.4 網絡編程 上傳文本

通常是已經封裝好的jar包裏面,這裏經過原始步驟實現一下這個功能

##############################################################################
客戶端步驟:
一、肯定鏈接地址和端口
二、讀取文件
三、獲取socket輸出流
四、發送
五、向服務器發送結束標記,讓服務器結束讀取動做
六、接收返回信息
七、關閉資源

java

###UploadTextClient.java服務器

public class UploadTextClient {
    /**
     * @param args
     * @throws IOException 
     * @throws UnknownHostException 
     */
    public static void main(String[] args) throws UnknownHostException, IOException {
        System.out.println("上傳文件客戶端運行......");
        // 客戶端:
        // 步驟:
        // 1,建立socket,明確地址和端口。
        Socket s = new Socket("192.168.1.223", 10006);

        // 2,源:讀取文本文件。獲取須要轉換的數據。
        BufferedReader bufr = new BufferedReader(new FileReader("tempfile\\client.txt"));
        
        // 3,目的:網絡,socket輸出流。將錄入的數據發送到服務端。
        PrintWriter out = new PrintWriter(s.getOutputStream(),true);
        
        // 4,頻繁的讀寫操做。
        String line = null;
        while((line=bufr.readLine())!=null){
            out.println(line);
        }
        
        //給服務端發送一個結束標記。這個標記是約定標記。有點麻煩。能夠更簡單。使用socket對象的shutdownOutput();
        s.shutdownOutput();//向服務端發送告終束標記。可讓服務端結束讀取的動做。
        
        // 5,源:socket,socket讀取流,讀取服務端發回來的上傳成功信息。
        BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
        String info = bufIn.readLine();
        System.out.println(info);
        
        // 6,關閉資源。
        bufr.close();
        s.close();
    }

}

 

###########################################################################################
服務端步驟:
一、創建服務端socket
二、接收客戶端socket
三、創建文件對象
四、屢次接收,寫入
五、返回接收完畢信息
六、關閉資源

###UploadTextServer.java網絡

public class UploadTextServer {
    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {


        System.out.println("上傳文本服務端運行....");
        // 服務端:
        // 思路:
        // 1,建立服務端socket 明確端口。
        ServerSocket ss = new ServerSocket(10006);
        while (true) {
            // 獲取客戶端對象。
            Socket s = ss.accept();
            System.out.println(s.getInetAddress().getHostAddress()+".....connected");

            // 2,源:socket輸入流。讀取客戶端的發過來的數據。
            BufferedReader bufIn = new BufferedReader(new InputStreamReader(
                    s.getInputStream()));

            // 3,目的:文件。
            PrintWriter pw = new PrintWriter(new FileWriter("tempfile\\server.txt"),true);

            // 4,頻繁的讀寫操做。
            String line = null;
            while ((line = bufIn.readLine()) != null) {
//                if("over".equals(line)){
//                    break;
//                }
                pw.println(line);
            }
            
            // 5,發回給客戶端上傳成功字樣。
            PrintWriter out = new PrintWriter(s.getOutputStream(),true);
            out.println("上傳成功");
            
            // 6,關閉客戶端。
            s.close();
        }
    }
}
相關文章
相關標籤/搜索