自定义协议方法

发送消息实现聊天功能的通讯字节流协议

private byte[] SendAgreement1106(string str)
{
  //设置该协议的id为1106
  byte[] id = BitConverter.GetBytes(1106);
  //将内容string转为流数据byte[]
  byte[] body = System.Text.Encoding.UTF8.GetBytes(str);
  //取得协议id和内容的流数据长度和,作为包头
  byte[] length = BitConverter.GetBytes(id.Length + body.Length);
  //unity的控制台输出
  Debug.Log("协议长度【" + id.Length + "】内容长度【" + body.Length 
                  + "】总长度【" + id.Length + body.Length + "】");
  //新建流数据对象,长度=协议长度+内容长度+包头长度
  byte[] send = new byte[id.Length + body.Length + sizeof(Int32)];
  //将各流数据打包成一个数据包
  //包头
  Array.Copy(length, 0, send, 0, sizeof(Int32));
  //协议
  Array.Copy(id, 0, send, sizeof(Int32), sizeof(Int32));
  //内容
  Array.Copy(body, 0, send, 2 * sizeof(Int32), body.Length);
  //返回要发送的数据包对象
  return send;
}

接受数据、分析协议

private void AgreementAnalysis(byte[] receive)
    {
        //若数据包长度小于包头的长度,则返回
        if (receive.Length < sizeof(Int32))
            return;
        //若数据包长度小于包头说明的长度,则返回
        if (receive.Length + sizeof(Int32) < BitConverter.ToInt32(receive, 0))
            return;   
        //获得协议id       
        int id = BitConverter.ToInt32(receive, 4);
        switch (id)
        {
            case 1106:
                ReceiveAgreement1106(receive);
                break;
        }
    }
    private void ReceiveAgreement1106(byte[] reveive)
    {
        Debug.Log("接受:" + System.Text.Encoding.UTF8.GetString(receive,
                    sizeof(Int32) * 2, receive.Length - 2 * sizeof(Int32)));
        //return System.Text.Encoding.UTF8.GetString(receive, sizeof(Int32) * 2, 
                    //receive.Length - 2*sizeof(Int32));
    }
控制台发送和接受的内容.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,962评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,403评论 4 61
  • 儿子也拥抱我了! 标签: 情感 2007-04-16 13:15 阅读(137)评论(43) 儿子在大连学习了半个...
    零星往事阅读 2,828评论 0 0
  • 今天早上看到海拉尔的居民楼很有特色,上面有一些装饰图案,和小果聊了一会,基本都是对称的,也不知是否和蒙古包的常用图...
    蜂蜜辣椒汁阅读 2,498评论 0 1
  • 云楼幢幢遮望眼,独自徘徊。 独自徘徊,按揭如山锐气埋。 也曾郊野抒襟抱,终向谁开。 终向谁开,疲惫青春落落怀。
    乱蝉嘶暮阅读 1,778评论 0 3

友情链接更多精彩内容