C# Socket分包和拆包.自已仿着别人写了一个方法.可是比以前更慢了.效率也更低了.请高手指点! 本帖最后由 qiuqingpo 于 2010-12-04 10:37:21 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 class Program { static void Main(string[] args) { byte[] bs = new byte[] {1,0,0,0,10, 1,0,0,0,12, 2,0,0,0,12, 123,2 }; byte[][] result = Split(bs, 4); } /// <summary> /// /// </summary> /// <param name="inputData">输入字节</param> /// <param name="pkgLen">包长</param> /// <returns>分包结果</returns> public static byte[][] Split(byte[] inputData,int pkgLen) { List<byte[]> outData = new List<byte[]>(); int index=0; if (inputData==null) { return outData.ToArray(); } int len=inputData.Length; // byte[] len2Bytes = new byte[pkgLen]; //直到剩余字节比(包长的存储字节)小; while (pkgLen <= len - index) { //获取(包长)字节 Array.Copy(inputData, index, len2Bytes, 0, pkgLen); //获取内容长度 int len2 = BitConverter.ToInt32(len2Bytes, 0); byte[] content; //如果剩余字节足够 if (len2 <= len - (pkgLen + index)) { content = new byte[len2]; } else //不足 { content = new byte[len - (pkgLen + index)]; } Array.Copy(inputData, index + pkgLen, content, 0, content.Length); index = index + pkgLen + content.Length; outData.Add(content); } return outData.ToArray(); } } 未将对象引用设置到对象的实例? GridView分页新问题 我想用扫描枪把条形码扫到某控件上显示,该怎么做啊!!!急!急!!急!!! 求助:C#编写程序集在VB进行引用,生成安装程序后,运行报错!谢谢!! 请问又没有可以拖动的编辑框阿? 请问C#中如何打开chm文件? 请教关于USB接口编程 如何获取其他服务器上的文件? C#实现打印 提议成立"C#经典书籍阅读小组" 如何设定wpf richtextbox显示内容可见但无法编辑 关于打包的问题
class Program
{
static void Main(string[] args)
{
byte[] bs = new byte[] {1,0,0,0,10,
1,0,0,0,12,
2,0,0,0,12,
123,2 };
byte[][] result = Split(bs, 4); }
/// <summary>
///
/// </summary>
/// <param name="inputData">输入字节</param>
/// <param name="pkgLen">包长</param>
/// <returns>分包结果</returns>
public static byte[][] Split(byte[] inputData,int pkgLen)
{
List<byte[]> outData = new List<byte[]>();
int index=0;
if (inputData==null)
{
return outData.ToArray();
}
int len=inputData.Length;
//
byte[] len2Bytes = new byte[pkgLen];
//直到剩余字节比(包长的存储字节)小;
while (pkgLen <= len - index)
{
//获取(包长)字节
Array.Copy(inputData, index, len2Bytes, 0, pkgLen);
//获取内容长度
int len2 = BitConverter.ToInt32(len2Bytes, 0);
byte[] content;
//如果剩余字节足够
if (len2 <= len - (pkgLen + index))
{
content = new byte[len2]; }
else //不足
{
content = new byte[len - (pkgLen + index)];
} Array.Copy(inputData, index + pkgLen, content, 0, content.Length);
index = index + pkgLen + content.Length;
outData.Add(content); }
return outData.ToArray();
}
}