JavaTCP上傳圖片代碼實(shí)例
1.客戶端代碼
public class UploadPicClient { public static void main(String[] args) throws UnknownHostException, IOException { // TODO Auto-generated method stub //1,創(chuàng)建客戶端socket Socket s = new Socket("localhost",10088); //2,讀取客戶端要上傳的圖片文件 FileInputStream fis = new FileInputStream("D:\\workspace\\day2019.1.17\\lanjing.jpg"); //3,獲取Socket輸出流,將讀到的圖片的數(shù)據(jù)發(fā)送到服務(wù)端 OutputStream out = s.getOutputStream(); byte[] buf = new byte[1021]; int len =0; while((len=fis.read(buf))!=-1){ out.write(buf,0,len); } //告訴服務(wù)端說:這邊的數(shù)據(jù)發(fā)送完畢讓服務(wù)端停止讀取 s.shutdownOutput(); //讀取服務(wù)端發(fā)回的內(nèi)容 InputStream in = s.getInputStream(); byte[] bufIn = new byte[1024]; int lenIn = in.read(buf); String text = new String (buf,0,lenIn); System.out.println(text); //關(guān)閉資源 fis.close(); s.close(); } }
2.服務(wù)端代碼
public class UploadPicSever { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub //創(chuàng)建tcp的socket服務(wù)端 ServerSocket ss = new ServerSocket(10088); //獲取客戶端 Socket s = ss.accept(); String ip = s.getInetAddress().getHostAddress(); System.out.println(ip+".....connected"); //讀取客戶端發(fā)來的數(shù)據(jù) InputStream in = s.getInputStream(); //將讀取到的數(shù)據(jù)存儲(chǔ)到一個(gè)文件中。 File dir = new File("D:\\workspace\\day2019.1.17"); if(!dir.exists()){ dir.mkdirs(); } File file = new File(dir,"blue.jpg"); FileOutputStream fos = new FileOutputStream(file); byte[] buf = new byte[1024]; int len = 0; while ((len=in.read(buf))!=-1){ fos.write(buf,0,len); } //獲取socket輸出流,將上傳成功字樣發(fā)送給客戶端 OutputStream out = s.getOutputStream(); out.write("上傳成功".getBytes()); fos.close(); s.close(); ss.close(); }
上傳后和上傳前的圖片:
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
java實(shí)現(xiàn)MapReduce對(duì)文件進(jìn)行切分的示例代碼
本文主要介紹了java實(shí)現(xiàn)MapReduce對(duì)文件進(jìn)行切分的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01Java數(shù)據(jù)結(jié)構(gòu)之ArrayList從順序表到實(shí)現(xiàn)
Java中的ArrayList是一種基于數(shù)組實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu),支持動(dòng)態(tài)擴(kuò)容和隨機(jī)訪問元素,可用于實(shí)現(xiàn)順序表等數(shù)據(jù)結(jié)構(gòu)。ArrayList在內(nèi)存中連續(xù)存儲(chǔ)元素,支持快速的隨機(jī)訪問和遍歷。通過學(xué)習(xí)ArrayList的實(shí)現(xiàn)原理和使用方法,可以更好地掌握J(rèn)ava中的數(shù)據(jù)結(jié)構(gòu)和算法2023-04-04JavaWeb ServletConfig作用及原理分析講解
ServletConfig對(duì)象,叫Servlet配置對(duì)象。主要用于加載配置文件的初始化參數(shù)。我們知道一個(gè)Web應(yīng)用里面可以有多個(gè)servlet,如果現(xiàn)在有一份數(shù)據(jù)需要傳給所有的servlet使用,那么我們就可以使用ServletContext對(duì)象了2022-10-10java虛擬機(jī)jvm方法區(qū)實(shí)例講解
在本篇文章里小編給大家整理的是一篇關(guān)于java虛擬機(jī)jvm方法區(qū)實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-02-02Springboot日期轉(zhuǎn)換器實(shí)現(xiàn)代碼及示例
這篇文章主要介紹了Springboot日期轉(zhuǎn)換器實(shí)現(xiàn)代碼及示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08