欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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í)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何區(qū)分JAVA中的equals與==

    如何區(qū)分JAVA中的equals與==

    這篇文章主要介紹了如何區(qū)分JAVA中的equals與==,文章簡單易懂,實(shí)例代碼幫助大家更好的參考學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • Java編程 多態(tài)

    Java編程 多態(tài)

    這篇文章主要介紹了關(guān)于Java編程的多態(tài),多態(tài)通過分離做什么和怎么做,從另一個(gè)角度將接口和實(shí)現(xiàn)分離開來。構(gòu)建可擴(kuò)展的程序,需要的朋友可以參考下
    2021-10-10
  • Java的反射機(jī)制之類加載詳解

    Java的反射機(jī)制之類加載詳解

    這篇文章主要介紹了Java的反射機(jī)制之類加載詳解,反射機(jī)制是java實(shí)現(xiàn)動(dòng)態(tài)語言的關(guān)鍵,也就是通過反射實(shí)現(xiàn)類動(dòng)態(tài)加載,靜態(tài)加載是指在編譯時(shí)期確定要加載的類的類型,即通過class關(guān)鍵字和類名來獲取對應(yīng)類的類型,需要的朋友可以參考下
    2023-09-09
  • Java 8 Stream流強(qiáng)大的原理

    Java 8 Stream流強(qiáng)大的原理

    這篇文章主要介紹了Java 8 Stream流強(qiáng)大的原理,Java 8 API添加了一個(gè)新的抽象稱為流Stream,可以讓你以一種聲明的方式處理數(shù)據(jù)。本文會對Stream的實(shí)現(xiàn)原理進(jìn)行剖析,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2021-12-12
  • Java協(xié)程編程之Loom項(xiàng)目實(shí)戰(zhà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-08
  • java創(chuàng)建以任意圖片為背景的窗口

    java創(chuàng)建以任意圖片為背景的窗口

    這篇文章主要為大家詳細(xì)介紹了java創(chuàng)建以任意圖片為背景的窗口,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:選擇排序 Selection Sort

    Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:選擇排序 Selection Sort

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:選擇排序 Selection Sort,本文直接給出實(shí)現(xiàn)代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下
    2015-06-06
  • idea2020.3.3集成maven及遇到的坑(推薦)

    idea2020.3.3集成maven及遇到的坑(推薦)

    這篇文章主要介紹了idea2020.3.3集成maven的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 完整B樹算法Java實(shí)現(xiàn)代碼

    完整B樹算法Java實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了完整的B樹算法Java實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Java基礎(chǔ)之Thymeleaf的簡單使用

    Java基礎(chǔ)之Thymeleaf的簡單使用

    這篇文章主要介紹了Java基礎(chǔ)之Thymeleaf的簡單使用,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04

最新評論