ITPub博客

首页 > IT职业 > IT图书 > socket中的byte消息格式设计

socket中的byte消息格式设计

IT图书 作者:xzh1980 时间:2021-09-09 09:14:39 0 删除 编辑

这二天在研究webabcd的socket多人聊天室,想尝试增加一些功能,比如:允许用户除发送文字外,还能发送图片或文件。

问题:

socket发送数据时,只能发送byte[]数组,且无法附带其它用户自定义参数,服务端如何知道用户发过来的是文字还是图片或是文件呢,所以只能在byte数组上动脑筋了.

silverlight中,用户选择的图片或文件,都能变成FileStream,近而变成byte数组,初步想法是在数组前后加一些标记之类,比如最开始几个字节是"img,txt,file"中对应的一个,这样服务端接收到以后,通过拆解分析就能知道用户发过来的何种格式。

下面演示如何解码: 

using System;
using System.Text;
namespace byteStudy
{
    class Program
    {
        static void Main(string[] args)
        {
            string msg = "^txt^jimmy^Hello^";//格式:^类型^用户名^内容(或文件流)^
            byte[] b = UTF32Encoding.UTF8.GetBytes(msg);//模拟接收到的byte数组
            int _i1 = -1, _i2 = -1, _i3 = -1, _i4 = -1;//用来记录分隔字符“^”出现的四次位置
            for (int i = 0; i 

运行结果如下:

94
116
120
116
94
106
105
109
109
121
94
72
101
108
108
111
94
-------------------------------
_i1=0
_i2=4
_i3=10
_i4=16
-------------------------------

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/73/viewspace-2801067/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-03

  • 博文量
    107
  • 访问量
    548