TCP上傳文本

來源:互聯網
上載者:User

標籤:

TCP上傳文本其實就是檔案的複製,只不過檔案複製大多是發生在本地,而上傳下載是發生在網路上。

註:TCP上傳文本最要命的一個問題就是:用戶端資料發送完畢,而服務端仍然在等待讀取。這時,就需要用戶端發送結束標記s.shutdownOutput(),該方法其實就是發送給服務端一個結束標記,這個標記也可以自己定義,但是自己定義有可能與發送的內容重複,所以建議使用shutdownxxxput()方法。

TCP上傳文本的用戶端:

import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;public class UpLoadClient {    public static void main(String[] args) throws Exception, IOException {        /*         * 上傳文本的用戶端,讀取本地文本資料,發送給伺服器端,伺服器端接收完畢後回饋“上傳成功”字樣         */        System.out.println("上傳文本用戶端啟動.....");        //用戶端socket        Socket s = new Socket("192.168.17.1",10001);//綁定要發送的ip地址以及連接埠號碼                //1.確定資料來源。本地文字檔        BufferedReader bufr = new BufferedReader(new FileReader("NetSpider.txt"));                //2.確定目的。socket輸出資料流//        BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));        PrintWriter out = new PrintWriter(s.getOutputStream(),true);//自動重新整理                String line = null;        while((line = bufr.readLine())!=null){            out.println(line);        }        //給服務端發送標記//        out.println("over");//容易重複                //使用socket的禁用輸出資料流方法。        s.shutdownOutput();                //3.通過socket讀取流擷取伺服器端返回的資料        BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));        String lineIn = bufIn.readLine();//阻塞式        System.out.println(lineIn);                //4.關閉        bufr.close();        s.close();                    }}

TCP上傳文本的服務端:

import java.io.BufferedReader;import java.io.FileWriter;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class UpLoadServer {    public static void main(String[] args) throws Exception {                /*         * 上傳文本的服務端,接收文本資料,並儲存到檔案中,伺服器端接收完畢後,回饋“上傳成功”字樣         */        System.out.println("上傳服務端啟動....");        //1.服務端對象        ServerSocket ss = new ServerSocket(10001);                //2.擷取用戶端        Socket s = ss.accept();        String ip = s.getInetAddress().getHostAddress();        System.out.println(ip+"...connected");                //3.擷取讀取流,確定源,網路socket        BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));                //4.確定目的        PrintWriter pw = new PrintWriter(new FileWriter("server.txt"),true);                //5.頻繁讀寫        String line = null;        while((line = bufIn.readLine())!=null){//            if("over".equals(line)){//                break;//            }            pw.println(line);        }                //6.改用戶端反饋資訊        PrintWriter out = new PrintWriter(s.getOutputStream(),true);        out.println("上傳成功");                pw.close();        s.close();        ss.close();                            }}

 

TCP上傳文本

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.