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

java模擬TCP通信實現(xiàn)客戶端上傳文件到服務器端

 更新時間:2019年10月18日 09:34:58   作者:良睿  
這篇文章主要為大家詳細介紹了java模擬TCP通信實現(xiàn)客戶端上傳文件到服務器端,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

java模擬TCP通信實現(xiàn)客戶端上傳文件到服務器端,供大家參考,具體內(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)絡輸出字節(jié)流,從而向服務器端發(fā)送數(shù)據(jù)
  OutputStream os = socket.getOutputStream();

  int len=0;
  byte[] bytes=new byte[1024];
  while ((len=fis.read(bytes))!=-1){
   //向服務器端發(fā)送文件
   os.write(bytes,0,len);
  }
  //關閉客戶端輸出流,中斷上傳
  socket.shutdownOutput();

  //獲取網(wǎng)絡字節(jié)輸入流,從而獲取服務器端傳來的數(shù)據(jù)
  InputStream is = socket.getInputStream();

  while ((len=is.read(bytes))!=-1){
   //輸出從服務器端獲取的數(shù)據(jù):“上傳成功”
   System.out.println(new String(bytes,0,len));
  }

  //關閉客戶端
  socket.close();
 }
}

服務器端

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;

/*
 服務器端
 */
public class TCPServer {
 public static void main(String[] args) throws IOException {
  //創(chuàng)建服務器端,端口號:8888
  ServerSocket serverSocket=new ServerSocket(8888);

  while (true){
   //獲取客戶端對象
   Socket socket=serverSocket.accept();

   //創(chuàng)建服務器端輸出流,從而把從客戶端獲得的文件保存到服務器本地,并且重新命名
   FileOutputStream fos=new FileOutputStream("upload"+System.currentTimeMillis()+".jpg");
   //獲取網(wǎng)絡輸出字節(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)絡輸出字節(jié)流,從而向客戶端發(fā)送數(shù)據(jù)
   OutputStream outputStream = socket.getOutputStream();

   //向客戶端發(fā)送信息:“上傳成功”
   outputStream.write("上傳成功".getBytes());

   //關閉客戶端
   socket.close();
  }
 }
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

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

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

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

    Java編程 多態(tài)

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

    Java的反射機制之類加載詳解

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

    Java 8 Stream流強大的原理

    這篇文章主要介紹了Java 8 Stream流強大的原理,Java 8 API添加了一個新的抽象稱為流Stream,可以讓你以一種聲明的方式處理數(shù)據(jù)。本文會對Stream的實現(xiàn)原理進行剖析,具有一定的參考價值,需要的朋友可以參考一下
    2021-12-12
  • Java協(xié)程編程之Loom項目實戰(zhàn)記錄

    Java協(xié)程編程之Loom項目實戰(zhàn)記錄

    這篇文章主要介紹了Java協(xié)程編程之Loom項目嘗鮮,如果用嘗鮮的角度去使用Loom項目,可以提前窺探JVM開發(fā)者們是如何基于協(xié)程這個重大特性進行開發(fā)的,這對于提高學習JDK內(nèi)核代碼的興趣有不少幫助,需要的朋友可以參考下
    2021-08-08
  • java創(chuàng)建以任意圖片為背景的窗口

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

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

    Java數(shù)據(jù)結構及算法實例:選擇排序 Selection Sort

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

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

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

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

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

    Java基礎之Thymeleaf的簡單使用

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

最新評論