北大青鸟光谷校区

北大青鸟光谷校区

  • 北大青鸟徐东校区
  • 北大青鸟光谷校区
  • 北大青鸟高新校区
  • 荆州青鸟之家
  • 襄阳青鸟之家

17740513250

百日千才

java入门知识-关于socket 分包和组包

发布日期:2023-03-31来源:武汉北大青鸟武汉校区作者:武汉宏鹏

  关于java入门的基础知识你了解多少?武汉北大青鸟技术老师为你介绍关于socket 分包和组包,理论知识也很重要,请认真学习并运用到实践中。

  建议使用字节流。

  消息形式为 包长度(short)+包头(short)+messages(string)+包尾(short)

  组包

  [java]

  private void writesMessage(short cmd , String messages, short move,Socket socket) {

  initOutput();

  try {

  output.writeShort(cmd);

  output.writeChars(messages);

  output.writeShort(move);

  MyUtil.sendMessage(socket, byteOutput.toByteArray());

  } catch (Exception e) {

  e.printStackTrace();

  }

  }

  private void initOutput()

  {

  byteOutput = new ByteArrayOutputStream();

  output = new DataOutputStream(byteOutput);

  }

  /**

  * 发送数据到网络流

  *

  * @param socket

  * @param bytes

  * @throws Exception

  */

  public static void sendMessage(Socket socket, byte[] bytes)throws Exception {

  DataOutputStream dataOutput = new DataOutputStream(socket.getOutputStream());

  // 编写数据的长度

  dataOutput.writeShort(bytes.length);

  dataOutput.write(bytes);

  dataOutput.flush();

  }

  拆包

  [java]

  short len = br.readShort();//br 为DataInputStream

  short cmd = br.readShort();

  byte[] bytes = new byte[len];

  br.read(bytes, 0, len-4);

  String messgeString = new String(bytes);

  System.out.println("条消息:"+messgeString);

  short move = br.readShort();

         北大青鸟武汉宏鹏光谷校区是湖北省规模更大的计算机培训机构,对于没有计算机基础的学员会设置有相关课程入门,无须担心入学难易问题。课程咨询热线:17740513250。

关闭

只为了方便您就学 北大青鸟光谷校区 北大青鸟武汉校区

武汉市洪山区珞喻路724号(地铁二号线光谷广场站F口出

Copyright (c) 2006-2023 武汉宏鹏教育咨询有限公司 版权所有 All Rights Reserved.