java模擬TCP通信實(shí)現(xiàn)客戶端上傳文件到服務(wù)器端
更新時(shí)間:2019年10月18日 09:34:58 作者:良睿
這篇文章主要為大家詳細(xì)介紹了java模擬TCP通信實(shí)現(xiàn)客戶端上傳文件到服務(wù)器端,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
java模擬TCP通信實(shí)現(xiàn)客戶端上傳文件到服務(wù)器端,供大家參考,具體內(nèi)容如下
客戶端
package com.zr; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.util.Scanner; /* 客戶端 */ public class TCPClient { public static void main(String[] args) throws IOException { //創(chuàng)建客戶端,ip地址:127.0.0.1,端口號:8888 Socket socket=new Socket("127.0.0.1",8888); //創(chuàng)建客戶端本地輸入流,從客戶本地獲取要上傳的文件 FileInputStream fis=new FileInputStream("timg.jpg"); //獲取網(wǎng)絡(luò)輸出字節(jié)流,從而向服務(wù)器端發(fā)送數(shù)據(jù) OutputStream os = socket.getOutputStream(); int len=0; byte[] bytes=new byte[1024]; while ((len=fis.read(bytes))!=-1){ //向服務(wù)器端發(fā)送文件 os.write(bytes,0,len); } //關(guān)閉客戶端輸出流,中斷上傳 socket.shutdownOutput(); //獲取網(wǎng)絡(luò)字節(jié)輸入流,從而獲取服務(wù)器端傳來的數(shù)據(jù) InputStream is = socket.getInputStream(); while ((len=is.read(bytes))!=-1){ //輸出從服務(wù)器端獲取的數(shù)據(jù):“上傳成功” System.out.println(new String(bytes,0,len)); } //關(guān)閉客戶端 socket.close(); } }
服務(wù)器端
package com.zr; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; /* 服務(wù)器端 */ public class TCPServer { public static void main(String[] args) throws IOException { //創(chuàng)建服務(wù)器端,端口號:8888 ServerSocket serverSocket=new ServerSocket(8888); while (true){ //獲取客戶端對象 Socket socket=serverSocket.accept(); //創(chuàng)建服務(wù)器端輸出流,從而把從客戶端獲得的文件保存到服務(wù)器本地,并且重新命名 FileOutputStream fos=new FileOutputStream("upload"+System.currentTimeMillis()+".jpg"); //獲取網(wǎng)絡(luò)輸出字節(jié)流,從而向客戶端發(fā)送數(shù)據(jù) InputStream inputStream = socket.getInputStream(); int len=0; byte[] bytes=new byte[1024]; while ((len=inputStream.read(bytes))!=-1){ //保存從客戶端收到的文件 fos.write(bytes,0,len); } //獲取網(wǎng)絡(luò)輸出字節(jié)流,從而向客戶端發(fā)送數(shù)據(jù) OutputStream outputStream = socket.getOutputStream(); //向客戶端發(fā)送信息:“上傳成功” outputStream.write("上傳成功".getBytes()); //關(guān)閉客戶端 socket.close(); } } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- Vue+Java 通過websocket實(shí)現(xiàn)服務(wù)器與客戶端雙向通信操作
- Java利用TCP協(xié)議實(shí)現(xiàn)客戶端與服務(wù)器通信(附通信源碼)
- Java實(shí)現(xiàn)UDP通信過程實(shí)例分析【服務(wù)器端與客戶端】
- java UDP通信客戶端與服務(wù)器端實(shí)例分析
- java Tcp通信客戶端與服務(wù)器端實(shí)例
- java模擬客戶端向服務(wù)器上傳文件
- java實(shí)現(xiàn)客戶端向服務(wù)器發(fā)送文件
- Java實(shí)現(xiàn)文件上傳服務(wù)器和客戶端
- java實(shí)現(xiàn)上傳文件到服務(wù)器和客戶端
- Java Socket編程服務(wù)器響應(yīng)客戶端實(shí)例代碼
- Java thrift服務(wù)器和客戶端創(chuàng)建實(shí)例代碼
- java多線程實(shí)現(xiàn)服務(wù)器端與多客戶端之間的通信
- 教你怎么用java實(shí)現(xiàn)客戶端與服務(wù)器一問一答
相關(guān)文章
Java協(xié)程編程之Loom項(xiàng)目實(shí)戰(zhàn)記錄
這篇文章主要介紹了Java協(xié)程編程之Loom項(xiàng)目嘗鮮,如果用嘗鮮的角度去使用Loom項(xiàng)目,可以提前窺探JVM開發(fā)者們是如何基于協(xié)程這個(gè)重大特性進(jìn)行開發(fā)的,這對于提高學(xué)習(xí)JDK內(nèi)核代碼的興趣有不少幫助,需要的朋友可以參考下2021-08-08Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:選擇排序 Selection Sort
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:選擇排序 Selection Sort,本文直接給出實(shí)現(xiàn)代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下2015-06-06