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

詳解Java的TCP/IP編程學(xué)習(xí)--基于定界符的成幀

 更新時間:2019年04月02日 15:15:37   作者:畢九生  
這篇文章主要介紹了Java的TCP/IP編程學(xué)習(xí)--基于定界符的成幀,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、定界符成幀

Framer接口

package framer;

import java.io.IOException;
import java.io.OutputStream;

public interface Framer {
  /**
   * 添加成幀信息并將指定消息輸出到指定流
   * @param message
   * @param out
   * @throws IOException
   */
  void frameMsg(byte[] message, OutputStream out) throws IOException;

  /**
   * 掃描指定的流,從中抽取下一條信息
   * @return
   * @throws IOException
   */
  byte[] nextMsg() throws IOException;
}

基于定界符的成幀

package framer;

import java.io.*;

/**
 * @ClassName DelimFramer
 * @Description TODO
 * @Author Cays
 * @Date 2019/3/16 22:04
 * @Version 1.0
 **/
public class DelimFramer implements Framer {
  //輸入流
  private InputStream in;
  //定界符為換行符
  private static final byte DELIMITER='\n';

  public DelimFramer(InputStream in) {
    this.in = in;
  }

  @Override
  public void frameMsg(byte[] message, OutputStream out) throws IOException {
    //檢測信息中是否包含換行符
    for (byte b:message){
      if (b==DELIMITER){
        throw new IOException("Message contaions delimiter");
      }
    }
    //將成幀的信息輸出到流中
    out.write(message);
    //添加定界符
    out.write(DELIMITER);
    out.flush();
  }

  @Override
  public byte[] nextMsg() throws IOException {
    ByteArrayOutputStream messageBuffer=new ByteArrayOutputStream();
    int nextByte;
    //讀取流中的每一個字節(jié),直到遇到定界符
    while ((nextByte=in.read())!=DELIMITER){
      if (nextByte==-1){
        //如果遇到定界符之前就到了流的終點
        if (messageBuffer.size()==0){
          return null;
        }else {
          //如果存入緩存區(qū)之前有數(shù)據(jù),拋出異常
          throw new EOFException("Non-empty message without delimiter");
        }
      }
      //將無定界符的字節(jié)寫入消息緩存區(qū)
      messageBuffer.write(nextByte);
    }
    //將消息緩存區(qū)的內(nèi)容以字節(jié)數(shù)組的形式返回
    return messageBuffer.toByteArray();
  }
}

以上所述是小編給大家介紹的Java的TCP/IP編程學(xué)習(xí)--基于定界符的成幀詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java ThreadLocal類使用詳解

    Java ThreadLocal類使用詳解

    這篇文章主要介紹了Java ThreadLocal類詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • SpringBoot Redisson 集成的實現(xiàn)示例

    SpringBoot Redisson 集成的實現(xiàn)示例

    本文主要介紹了SpringBoot Redisson 集成的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • Spring AOP實現(xiàn)功能權(quán)限校驗功能的示例代碼

    Spring AOP實現(xiàn)功能權(quán)限校驗功能的示例代碼

    本篇文章主要介紹了Spring AOP實現(xiàn)功能權(quán)限校驗功能的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • 計算機二級考試java軟件操作教程 教大家如何學(xué)習(xí)java

    計算機二級考試java軟件操作教程 教大家如何學(xué)習(xí)java

    如何成為一名知識豐富的Java程序員,順利通過計算機二級Java考試,這篇文章主要主要教大家如何學(xué)習(xí)java,java的學(xué)習(xí)路線是什么,從何學(xué)起,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • JPA添加Pageable實現(xiàn)翻頁時報錯的問題

    JPA添加Pageable實現(xiàn)翻頁時報錯的問題

    這篇文章主要介紹了解決JPA添加Pageable實現(xiàn)翻頁時報錯的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java?stream實現(xiàn)分組BigDecimal求和以及自定義分組求和

    java?stream實現(xiàn)分組BigDecimal求和以及自定義分組求和

    這篇文章主要給大家介紹了關(guān)于java?stream實現(xiàn)分組BigDecimal求和以及自定義分組求和的相關(guān)資料,Stream是Java8的一大亮點,是對容器對象功能的增強,它專注于對容器對象進(jìn)行各種非常便利、高效的聚合操作或者大批量數(shù)據(jù)操作,需要的朋友可以參考下
    2023-12-12
  • Maven在Java8下如何忽略Javadoc的編譯錯誤詳解

    Maven在Java8下如何忽略Javadoc的編譯錯誤詳解

    這篇文章主要給大家介紹了關(guān)于Maven在Java8下如何忽略Javadoc的編譯錯誤的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • Java實現(xiàn)最小生成樹MST的兩種解法

    Java實現(xiàn)最小生成樹MST的兩種解法

    最小生成樹(MST)指在連通圖的所有生成樹中,所有邊的權(quán)值和最小的生成樹。本文介紹了求最小生成樹的兩種方法:Prim算法和Kruskal算法,需要的可以參考一下
    2022-05-05
  • EasyExcel實現(xiàn)導(dǎo)入+各種數(shù)據(jù)校驗功能

    EasyExcel實現(xiàn)導(dǎo)入+各種數(shù)據(jù)校驗功能

    這篇文章主要介紹了EasyExcel實現(xiàn)導(dǎo)入+各種數(shù)據(jù)校驗,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • Java整型數(shù)與網(wǎng)絡(luò)字節(jié)序byte[]數(shù)組轉(zhuǎn)換關(guān)系詳解

    Java整型數(shù)與網(wǎng)絡(luò)字節(jié)序byte[]數(shù)組轉(zhuǎn)換關(guān)系詳解

    這篇文章主要介紹了Java整型數(shù)與網(wǎng)絡(luò)字節(jié)序byte[]數(shù)組轉(zhuǎn)換關(guān)系,結(jié)合實例形式歸納整理了java整型數(shù)和網(wǎng)絡(luò)字節(jié)序的byte[]之間轉(zhuǎn)換的各種情況,需要的朋友可以參考下
    2017-08-08

最新評論