最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java socket字節(jié)流傳輸示例解析

 更新時間:2016年09月17日 15:58:14   作者:fomeiherz  
這篇文章主要為大家詳細介紹了Java socket字節(jié)流傳輸示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文為大家分享了Java socket字節(jié)流傳輸示例,供大家參考,具體內(nèi)容如下

服務(wù)端server端: 

package com.yuan.socket;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * Created by YUAN on 2016-09-17.
 */
public class TalkServer4Byte {
  
  private ServerSocket server;
  private int port = 5020;

  public TalkServer4Byte() {
    try {
      server = new ServerSocket(port);
    } catch (IOException e) {
    }
  }

  public void talk() {
    System.out.println("監(jiān)控端口:" + port);
    Socket socket = null;
    while (true) {
      try {
        // 阻塞等待,每接收到一個請求就創(chuàng)建一個新的連接實例
        socket = server.accept();
        System.out.println("連接客戶端地址:" + socket.getRemoteSocketAddress());

        // 裝飾流BufferedReader封裝輸入流(接收客戶端的流)
        BufferedInputStream bis = new BufferedInputStream(
            socket.getInputStream());

        DataInputStream dis = new DataInputStream(bis);
        byte[] bytes = new byte[1]; // 一次讀取一個byte
        String ret = "";
        while (dis.read(bytes) != -1) {
          ret += bytesToHexString(bytes) + " ";
          if (dis.available() == 0) { //一個請求
            doSomething(ret);
          }
        }

      } catch (IOException e) {
        System.out.println(e.getMessage());
      } finally {
        try {
          socket.close();
        } catch (IOException e) {
          System.out.println(e.getMessage());
        }
      }
    }

  }
  
  public static void doSomething(String ret) {
    System.out.println(ret);
  }

  public static String bytesToHexString(byte[] src) {
    StringBuilder stringBuilder = new StringBuilder("");
    if (src == null || src.length <= 0) {
      return null;
    }
    for (int i = 0; i < src.length; i++) {
      int v = src[i] & 0xFF;
      String hv = Integer.toHexString(v);
      if (hv.length() < 2) {
        stringBuilder.append(0);
      }
      stringBuilder.append(hv);
    }
    return stringBuilder.toString();
  }

  public static String BytesHexString(byte[] b) {
    String ret = "";
    for (int i = 0; i < b.length; i++) {
      String hex = Integer.toHexString(b[i] & 0xFF);
      if (hex.length() == 1) {
        hex = '0' + hex;
      }
      ret += hex.toUpperCase();
    }
    return ret;
  }

  public static void main(String[] args) {
    TalkServer4Byte server = new TalkServer4Byte();
    server.talk();
  }
}
 

客戶端client代碼:

package com.yuan.socket;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;

/**
 * Created by YUAN on 2016-09-17.
 */
public class TalkClient4Byte {
  
  private Socket socket;
  private SocketAddress address;

  public TalkClient4Byte() {
    try {
      socket = new Socket();
      address = new InetSocketAddress("127.0.0.1", 5020);
      socket.connect(address, 1000);
    } catch (IOException e) {
      e.printStackTrace();
    }

  }

  public void talk() {

    try {

      //使用DataInputStream封裝輸入流
      InputStream os = new DataInputStream(System.in);
      
      byte [] b = new byte[1];
      DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
      while (-1 != os.read(b)) {
        dos.write(b); // 發(fā)送給客戶端
      }
      
      dos.flush();
      dos.close();
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      try {
        socket.close();
      } catch (IOException e) {

      }
    }
  }

  public static void main(String[] args) {
    TalkClient4Byte client = new TalkClient4Byte();
    client.talk();
  }

}

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

相關(guān)文章

  • Java8的Lambda表達式你真的會嗎

    Java8的Lambda表達式你真的會嗎

    這篇文章主要介紹了Java8的Lambda表達式你真的會嗎,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 使用SpringBoot中web項目推薦目錄結(jié)構(gòu)的問題

    使用SpringBoot中web項目推薦目錄結(jié)構(gòu)的問題

    這篇文章主要介紹了SpringBoot中web項目推薦目錄結(jié)構(gòu)的問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • 代碼實例Java IO判斷目錄和文件是否存在

    代碼實例Java IO判斷目錄和文件是否存在

    本篇文章給大家分享了Java IO判斷目錄和文件是否存在的代碼,對此有需要的讀者們可以跟著小編一起學(xué)習(xí)下。
    2018-02-02
  • 詳解JAVA的封裝

    詳解JAVA的封裝

    Java面向?qū)ο蟮娜筇匦裕悍庋b、繼承、多態(tài)。下面對三大特性之一封裝進行了總結(jié),需要的朋友可以參考下
    2017-04-04
  • 一次Spring無法啟動的問題排查實戰(zhàn)之字節(jié)碼篇

    一次Spring無法啟動的問題排查實戰(zhàn)之字節(jié)碼篇

    最近學(xué)習(xí)了spring相關(guān)知識,公司項目也用到了spring,下面這篇文章主要給大家介紹了一次Spring無法啟動的問題排查實戰(zhàn)之字節(jié)碼篇的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • 提交gRPC-spring-boot-starter項目bug修復(fù)的pr說明

    提交gRPC-spring-boot-starter項目bug修復(fù)的pr說明

    這篇文章主要介紹了這篇文章主要為大家介紹了gRPC-spring-boot-starter項目提交bug修復(fù)的pr的原因說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • 基于注解的springboot+mybatis的多數(shù)據(jù)源組件的實現(xiàn)代碼

    基于注解的springboot+mybatis的多數(shù)據(jù)源組件的實現(xiàn)代碼

    這篇文章主要介紹了基于注解的springboot+mybatis的多數(shù)據(jù)源組件的實現(xiàn),會使用到多個數(shù)據(jù)源,文中通過代碼講解的非常詳細,需要的朋友可以參考下
    2021-04-04
  • Java 中引入內(nèi)部類的意義?

    Java 中引入內(nèi)部類的意義?

    這篇文章主要介紹了Java 中引入內(nèi)部類的意義?文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,,需要的朋友可以參考下
    2019-06-06
  • Maven基礎(chǔ):錯誤對應(yīng):was cached in the local repository的解決

    Maven基礎(chǔ):錯誤對應(yīng):was cached in the local&nbs

    這篇文章主要介紹了Maven基礎(chǔ):錯誤對應(yīng):was cached in the local repository的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • java.io.EOFException: Unexpected end of ZLIB input stream異常解決

    java.io.EOFException: Unexpected end of 

    本文主要介紹了java.io.EOFException: Unexpected end of ZLIB input stream異常解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05

最新評論

梁山县| 镇坪县| 宜丰县| 瑞安市| 连州市| 庐江县| 甘南县| 尚义县| 聂拉木县| 清远市| 崇义县| 安平县| 资源县| 兴安县| 林甸县| 容城县| 原平市| 寿宁县| 灵宝市| 北安市| 吉林省| 鄯善县| 任丘市| 榆林市| 汨罗市| 黄平县| 壤塘县| 东阿县| 肇源县| 江西省| 资中县| 桐柏县| 河曲县| 阿拉善右旗| 丰台区| 茶陵县| 子洲县| 扎囊县| 阿荣旗| 甘洛县| 政和县|