JavaTCP上傳文本文件代碼
基于聊天客戶端的基礎(chǔ)上的文件(TXT文件)傳輸
客戶端代碼:
public class UploadClient { public static void main(String[] args) throws UnknownHostException, IOException { // TODO Auto-generated method stub //1,創(chuàng)建socket客戶端對(duì)象 Socket s = new Socket("localhost",10005); //2,讀取本地文件 BufferedReader bufr = new BufferedReader(new FileReader("C:\\新建文件夾\\client.txt")); //3,Socket流 PrintWriter out = new PrintWriter(s.getOutputStream(),true); String line = null; while((line=bufr.readLine())!=null){ out.println(line); } //告訴服務(wù)端,客戶端寫完了 s.shutdownOutput(); //4,讀取服務(wù)端返回的上傳成功對(duì)象 BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream())); String str = bufIn.readLine(); System.out.println(str); //關(guān)閉資源 bufr.close(); s.close(); } }
服務(wù)端代碼:
public static void main(String[] args) throws UnknownHostException, IOException { // TODO Auto-generated method stub //1, ServerSocket ss = new ServerSocket(10005); //2,獲取Socket對(duì)象 Socket s = ss.accept(); //獲取IP System.out.println(s.getInetAddress().getHostAddress()+"....conected"); //3,獲取Socket讀取流,并裝飾 BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream())); //4,寫入文件 BufferedWriter bufw = new BufferedWriter(new FileWriter("C:\\新建文件夾\\server.txt")); String line = null; while((line=bufIn.readLine())!=null){ bufw.write(line); bufw.newLine();//換行 bufw.flush();//刷新流 } PrintWriter out = new PrintWriter(s.getOutputStream(),true); out.println("上傳成功"); bufw.close(); s.close();//關(guān)閉客戶端 ss.close();//關(guān)閉服務(wù)端 }
要注意的是TCP傳輸中,一定要先運(yùn)行服務(wù)端再運(yùn)行客戶端。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
Spring 報(bào)錯(cuò):元素 "context:component-scan" 的前綴 "context" 未綁定的問(wèn)題解決
這篇文章主要介紹了Spring 報(bào)錯(cuò):元素 "context:component-scan" 的前綴 "context" 未綁定的問(wèn)題解決的相關(guān)資料,需要的朋友可以參考下2016-11-11Spring Cloud Sleuth整合zipkin過(guò)程解析
這篇文章主要介紹了Spring Cloud Sleuth整合zipkin過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12Java中的notyfy()和notifyAll()的本質(zhì)區(qū)別
很多朋友對(duì)java中的notyfy()和notifyAll()的本質(zhì)區(qū)別不了解,今天小編抽空給大家整理一篇教程關(guān)于Java中的notyfy()和notifyAll()的本質(zhì)區(qū)別,需要的朋友參考下吧2017-02-02詳解如何開發(fā)一個(gè)MyBatis通用Mapper的輪子
因?yàn)橐恍┰?,例如:通用?shù)據(jù)權(quán)限控制、MyBatis-Plus好像不支持聯(lián)合主鍵等,我們不得不開發(fā)一個(gè)MyBatis通用Mapper的輪子。文中的示例代碼講解詳細(xì),需要的可以參考一下2022-12-12Java中實(shí)現(xiàn)文件預(yù)覽的功能(實(shí)例代碼)
大家都知道word,Excel,PPT實(shí)現(xiàn)在線預(yù)覽常用的方式就是先轉(zhuǎn)換成pdf,然后在進(jìn)行預(yù)覽,下面給大家介紹Java中如何實(shí)現(xiàn)文件預(yù)覽的功能,需要的朋友可以參考下2023-05-05Maven項(xiàng)目無(wú)法加載jdbc.properties的問(wèn)題解決
本文主要介紹了Maven項(xiàng)目無(wú)法加載jdbc.properties的問(wèn)題解決,文章首先分析了問(wèn)題的原因,然后提供了解決方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08