91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解Java的TCP/IP編程學習--基于定界符的成幀

發布時間:2020-08-27 08:03:25 來源:腳本之家 閱讀:135 作者:畢九生 欄目:編程語言

一、定界符成幀

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;
    //讀取流中的每一個字節,直到遇到定界符
    while ((nextByte=in.read())!=DELIMITER){
      if (nextByte==-1){
        //如果遇到定界符之前就到了流的終點
        if (messageBuffer.size()==0){
          return null;
        }else {
          //如果存入緩存區之前有數據,拋出異常
          throw new EOFException("Non-empty message without delimiter");
        }
      }
      //將無定界符的字節寫入消息緩存區
      messageBuffer.write(nextByte);
    }
    //將消息緩存區的內容以字節數組的形式返回
    return messageBuffer.toByteArray();
  }
}

以上所述是小編給大家介紹的Java的TCP/IP編程學習--基于定界符的成幀詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

白河县| 临湘市| 玛沁县| 军事| 阿巴嘎旗| 房山区| 井陉县| 太保市| 泸西县| 铁力市| 中卫市| 新营市| 会同县| 额济纳旗| 龙里县| 乌兰县| 虎林市| 湘潭市| 广东省| 琼结县| 大连市| 贵港市| 定襄县| 昌黎县| 隆昌县| 察雅县| 小金县| 呼图壁县| 建平县| 磐石市| 新沂市| 高唐县| 叙永县| 定陶县| 新昌县| 盱眙县| 客服| 民乐县| 民勤县| 临澧县| 仙居县|