多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > socket中的byte消息格式設計

socket中的byte消息格式設計

來源:程序員人生   發布時間:2013-12-03 11:50:11 閱讀次數:2629次

  這二天在研究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 < b.Length; i++)
{
if (b[i] == (byte)'^')
{
if (_i1 == -1)
{
_i1 = i;
}
else if (_i2 == -1)
{
_i2 = i;
}
else if (_i3 == -1)
{
_i3 = i;
}
else if (_i4 == -1)
{
_i4 = i;
}
}
Console.WriteLine(b[i].ToString());
}


Console.WriteLine("-------------------------------");

if (_i1 == 0 && _i4 == b.Length - 1 && _i3 != -1 && _i2 != -1)
{
Console.WriteLine("_i1={0}", _i1);
Console.WriteLine("_i2={0}", _i2);
Console.WriteLine("_i3={0}", _i3);
Console.WriteLine("_i4={0}", _i4);

byte[] bFlag = new byte[_i2 - _i1 - 1];

for (int i = _i1 + 1; i < _i2; i++)
{
bFlag[i - _i1 - 1] = b[i];
}

string _flag = UTF32Encoding.UTF8.GetString(bFlag);

byte[] bName = new byte[_i3 - _i2 - 1];

for (int i = _i2 + 1; i < _i3; i++)
{
bName[i - _i2 - 1] = b[i];
}

string _name = UTF32Encoding.UTF8.GetString(bName);


byte[] bContent = new byte[_i4 - _i3 - 1];

for (int i = _i3 + 1; i < _i4; i++)
{
bContent[i - _i3 - 1] = b[i];
}

string _content = UTF32Encoding.UTF8.GetString(bContent);//如果是文件的話,用其它辦法還原成流,近而變成文件或圖片

Console.WriteLine("-------------------------------");
Console.WriteLine("類型:" + _flag);
Console.WriteLine("用戶:" + _name);
Console.WriteLine("內容:" + _content);
}
Console.Read();
}
}
}

運行結果如下:

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
-------------------------------
類型:txt
用戶:jimmy
內容:Hello

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美一区二区三区在线可观看 | 欧美性大战久久久久久久 | 最近最新中文字幕1页 | 国久久| 永久在线观看视频 | 欧美特黄a级高清免费看片 欧美特黄一级aa毛片 | 国产中文字幕视频在线观看 | 69免费视频大片 | 久久成人免费 | 毛片大全网站 | 91探花国产综合在线精品 | 亚洲14p| 欧美国产精品亚洲精品第一区 | 一区二区不卡久久精品 | 国产偷啪视频一区 | 国产欧美日韩精品第一区 | 国内一区二区三区精品视频 | 在线观看视频一区二区 | 国产高清视频免费人人爱 | 欧美1级| 国产福利视频一区二区 | 久久国产精品-久久精品 | 国产免费福利体检区久久 | 国产高清自拍 | japanhdⅹxxxhd日本 | 在线看亚洲| 双性h啪啪樱桃动漫直接观看 | 亚洲图片综合网 | 亚洲成人天堂 | 中文字幕26页 | 视频免费观看在线播放高清 | 午夜男人视频 | 亚州毛色毛片免费观看 | 99久久精品国产一区二区成人 | 亚洲精品麻豆 | 亚洲一区二区三区欧美 | 欧美国产精品一区二区免费 | 乱人伦99久久 | 国产成人a一在线观看 | www在线播放 | 一级做a爰片久久毛片 |