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ù)端說(shuō):這邊的數(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ā)來(lái)的數(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)行切分的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Java數(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ī)訪問(wèn)元素,可用于實(shí)現(xiàn)順序表等數(shù)據(jù)結(jié)構(gòu)。ArrayList在內(nèi)存中連續(xù)存儲(chǔ)元素,支持快速的隨機(jī)訪問(wèn)和遍歷。通過(guò)學(xué)習(xí)ArrayList的實(shí)現(xiàn)原理和使用方法,可以更好地掌握J(rèn)ava中的數(shù)據(jù)結(jié)構(gòu)和算法2023-04-04
JavaWeb ServletConfig作用及原理分析講解
ServletConfig對(duì)象,叫Servlet配置對(duì)象。主要用于加載配置文件的初始化參數(shù)。我們知道一個(gè)Web應(yīng)用里面可以有多個(gè)servlet,如果現(xiàn)在有一份數(shù)據(jù)需要傳給所有的servlet使用,那么我們就可以使用ServletContext對(duì)象了2022-10-10
java虛擬機(jī)jvm方法區(qū)實(shí)例講解
在本篇文章里小編給大家整理的是一篇關(guān)于java虛擬機(jī)jvm方法區(qū)實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-02-02
Springboot日期轉(zhuǎn)換器實(shí)現(xiàn)代碼及示例
這篇文章主要介紹了Springboot日期轉(zhuǎn)換器實(shí)現(xiàn)代碼及示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08

