ZYSocket 4.3.5 SOCKET框架组 发布[NEW]

摘要:
值得注意的是加了标签的类里面的属性都需要加,不加标签的什么标签都不要加注意已经删除了Poienter类默认使用默认使用protobuf-net格式化CSDN:http://luyikk.download.csdn.net/github:https://github.com/luyikk/ZYSOCKETNUGETDLL:PM˃Install-PackageZYSOCKETDLLNUGETSoruce:PM˃Install-PackageZYSOCKETSourcebyluyikk@126.comBLOG:http://blog.csdn.net/luyikkQQ:5473864484.3更新说明:使用了ZYNetRingBufferPool代替ZYNetBufferReadStream使用了ZYNetRingBufferPoolV2代替了ZYNetBufferReadStreamV2这2个类是线程安全的,测试代码里面有。不懂百度吧~ZySocketSuper添加了publicBinaryInputOffsetHandlerBinaryOffsetInput{get;set;}你现在可以使用偏移量来把数据包输入到缓冲池了。对了别忘了把IsOffsetInput设置成true详细看例1这样做的好处是可以少一次copyZYSocket.share.ReadBytesandZYSocket.share.ReadBytesV2添加了直接读取函数比如inti=read.readInt32()为了方便嘛UDPService嘛目前测试阶段用的比较少。
最新代码请到github:https://github.com/luyikk/ZYSOCKET更新

4.3.5更新说明:

修复各种BUG。 重写了一份 protobuf-net 有什么用呢,不需要添加 protobuf标签了。
值得注意的是 加了标签的类 里面的属性 都需要加,不加标签的 什么标签都不要加
注意已经删除了 Poienter 类 默认使用 默认使用 protobuf-net 格式化

CSDN:http://luyikk.download.csdn.net/

github:https://github.com/luyikk/ZYSOCKET

NUGET DLL:PM> Install-Package ZYSOCKETDLL

NUGET Soruce:PM> Install-Package ZYSOCKETSource

byluyikk@126.com
BLOG:http://blog.csdn.net/luyikk
QQ:547386448

4.3更新说明:

使用了 ZYNetRingBufferPool 代替 ZYNetBufferReadStream
使用了 ZYNetRingBufferPoolV2 代替了 ZYNetBufferReadStreamV2

这2个类是 线程安全的,测试代码 里面有。这2个类基于环形数据缓冲的,你懂的。不懂百度吧~

ZySocketSuper 添加了 public BinaryInputOffsetHandler BinaryOffsetInput { get; set; }

你现在可以 使用偏移量 来把数据包输入到 缓冲池了。 对了 别忘了 把 IsOffsetInput 设置成true 详细看例1
这样做的好处是可以 少一次copy

ZYSocket.share.ReadBytes and ZYSocket.share.ReadBytesV2 添加了 直接读取函数 比如 int i=read.readInt32() 为了方便嘛

UDPService 嘛 目前测试阶段用的比较少。大家有空可以帮忙测测

对了 所有例子 我都改成了 RingBufferPool.

CSDN:http://luyikk.download.csdn.net/

github:https://github.com/luyikk/ZYSOCKET

NUGET DLL:PM> Install-Package ZYSOCKETDLL

NUGET Soruce:PM> Install-Package ZYSOCKETSource

byluyikk@126.com
BLOG:http://blog.csdn.net/luyikk
QQ:547386448

4.2.3更新说明:

添加了.NET 4版本的 ZYSOCKETShare
.NET 4版本的 集成了 MsgPack 以及 Protobuf
例子请看 例子 7 例子8

.NET 4版本添加了 Socket RPC
例子请看 例子 9
更相信的双工例子 请看 例子9- RPC 聊天室 双工
添加了 CmdToCallManager 用于处理 服务器多Cmd 自动指向函数 来代替 switch
详细请看 例子10 CmdToCall

CSDN:http://luyikk.download.csdn.net/

NUGET:PM> Install-Package ZYSOCKETSourceAndExample

byluyikk@126.com
BLOG:http://blog.csdn.net/luyikk
QQ:547386448

4.2.2 已经出了 修复了一些问题.

完全支持MONO 平台.

提供了安卓平台的MONO 版本 提供了 TCP P2P 安卓例子~

服务器项目使用.NET 4了.其他的不变,比如CLIENTB 还是.NET 2.0 为了向下兼容嘛

请大家到

CSDN:http://luyikk.download.csdn.net/ (安卓需独立下载)

NUGET: 搜索 ZYSOCKET (有安卓版本) CMD:PM> Install-Package ZYSOCKETSourceAndExample

byluyikk@126.com
BLOG:http://blog.csdn.net/luyikk
QQ:547386448

//------------------------4.2.1-------------------------
1更新了点小BUG. 包括组包下 特别小的包的错误问题
2添加了 ZYSocketSSLClient 可以对 SSL 服务器的 访问
3例5
4MONO Server
5添加了 ZYSocketSSLClient 访问工行网站例子

ZYSOCKET 4.2(v2) 下载地址:http://luyikk.download.csdn.net/

注意:如果服务时间长了发现 Handler 不下降 到达几万的时候服务器无法服务了。 那么

在服务器端这里加上这句话就可以了。

socketAsync.AcceptSocket.Close();

socketAsync.AccpetSocket.Dispose();

如果你发现你无法调用 Socket.Dispose() 那么 请使用 .NET 4.0

小知识:

那么Handler出现泄漏是怎么样的呢,一般在任务管理器看到 Handler出现上万了,导致服务器无法服务就是 Handler泄漏了那源代码 例1说吧一般服务需要 400多个 Handler,然后一个用户一个 socket对象 需要1个 Handler 如果 Handler数=用户连接数+450 左右 那么就是正常的,如果Handler数>用户连接数+450 已经出现了翻倍现象,那么就是不正常了

ZYSocket 4.3.5 SOCKET框架组 发布[NEW]第1张

北风之神SOCKET框架组4.2(V2)发布:

//-------------------------4.2-------------------------
更新了一个 TCPP2P 框架 详细看说明 ZYSocketFrame2TCPP2P说明.txt

说明.txt:

P2PCLIENT 基本 DLL
P2PSERVER P2P服务器,一般不需要咋改
P2PFileINFO 用次框架实现的 一款文件共享系统 一个测试程序
TestClientConsole 教你如何在你的项目中 使用 P2PCLIENT 一个测试程序

此P2P是基于 TCP的,能穿透大多数路由器

原理: C 同时连接 对方的 连接出的端口号 S 用于同步 C
可做项目: 想的到就做的到,比如能做个 在家就能直接访问公司电脑的一款程序,服务器文件同步程序等

P2PSERVER P2P服务器 架设方法:
首先在服务器上 部署 P2PSERVER. Config 文件基本不用修改 当然你也根据需要修改
MServerPort 为主服务端口
RegServerPort 为副端口
MaxConCount 为连接最大数
ServerIP 为服务IP

P2PFileINFO 架设方法:
修改Config文件
ServerIP 为P2P服务器IP
ServerPort 为服务器端口 对于上面的 MServerPort
ServerRegPort 为服务器符端口 对于上面的 RegServerPort
MinPort 和 MaxPort 为端口号范围 一般不用改
ResCount 为 连接次数

ConnentKey 为访问密码
SharePath 为 共享目录

TestClientConsole CONFIG:
ServerIP 为P2P服务器IP
ServerPort 为服务器端口 对于上面的 MServerPort
ServerRegPort 为服务器符端口 对于上面的 RegServerPort
MinPort 和 MaxPort 为端口号范围 一般不用改
ResCount 为 连接次数

byluyikk@126.com
BLOG:http://blog.csdn.net/luyikk
QQ:547386448

ZYSOCKET 4.2(v2) 下载地址:http://luyikk.download.csdn.net/

ZYSocket 4.3.5 SOCKET框架组 发布[NEW]第2张

北风之神SOCKET框架组4.1(V2)发布:

1.使用sharpSerializerSolution 序列化,反序列化,提高了性能,(感谢麦上飞提供)

注意此组件只能序列化有 无参构造函数的类。所以多使用自定义类!!像DataSet DataTable会失败,如果你想序列化这些,请把序列化代码改回去吧。它们在 BufferFormat.cs 和 ReadBytes.cs 里面 很容易找到

2.修复了一些已知的BUG。

byluyikk@126.com
BLOG:http://blog.csdn.net/luyikk
QQ:547386448

ZYSOCKET 4.1(v2) 下载地址: http://luyikk.download.csdn.net/

第2次修复一个BUG:

ZYSocketFrame2北风之神SOCKET框架(ZYSocket)YSocketShareshareYNetBufferReadStream.cs

请将Flush方法修改为:

  1. publicoverridevoidFlush()
  2. {
  3. _capacity=MaxSize;
  4. Datas=newbyte[_capacity];
  5. _length=0;
  6. _canRead=true;
  7. _canWrile=true;
  8. _headlengt=-1;
  9. _position=0;
  10. _pw=0;
  11. }

修复一个小问题:

请将.YSocketFrame2北风之神SOCKET框架(ZYSocket)YSocketShareshareYNetBufferReadStreamV2.cs CheckHeadLengt()方法修改为:

  1. protectedoverridevoidCheckHeadLengt()
  2. {
  3. if(_headlengt==-1)
  4. {
  5. //intnum=(_length-_pw);
  6. //if(HeadBit>num)
  7. //{
  8. //return;
  9. //}
  10. re:
  11. while(Datas[_pw]!=0xFF)
  12. {
  13. if(_pw<_length-1)
  14. _pw++;
  15. else
  16. return;
  17. }
  18. _pw++;
  19. if(_pw>=_position-1)
  20. return;
  21. bytelengt;
  22. uintres;
  23. if(!ReadUInt32(outres,outlengt))
  24. return;
  25. if(res>0)
  26. {
  27. if(res>MaxSize)
  28. {
  29. this._headlengt=-1;
  30. RestPostion();
  31. return;
  32. }
  33. this._headlengt=(int)res;
  34. }
  35. else
  36. {
  37. _pw+=lengt;
  38. gotore;
  39. }
  40. }
  41. }

北风之神SOCKET框架组4.0(V2)发布:

1.添加了一组新的数据包处理类
ZYSocketShare.share.ZYNetBufferReadStream //此类可代替 ZYSocketShare.share.BuffList
ZYSocketShare.share.ZYNetBufferReadStreamV2 //此类是 ZYSocketShare.share.ZYNetBufferReadStream 的改进版,优化了int存储方式,数据包容错率等
ZYSocketShare.share.BufferFormatV2 //此类是 ZYSocketShare.share.BufferFormat 的改进版,优化了int存储方式等
ZYSocketShare.share.ReadBytesV2 //此类是 ZYSocketShare.share.ReadBytes 的改进版,优化了int存储方式等

注意 如果需要更换为V2数据包处理框架,那么请确保 使用ZYNetBufferReadStreamV2 BufferFormatV2 ReadBytesV2 保持一致的应用。

添加了案例
1. 例1(V2) 例1的V2例子
2. 例4(FileIO) 一款使用 V2 数据包处理架构 制作的一个远程文件系统管理程序 注意:初学者请勿轻易修改任何代码,否则可能会影响测试效果

byluyikk@126.com
BLOG:http://blog.csdn.net/luyikk
QQ:547386448

ZYSOCKET4.0(v2) 下载地址: http://luyikk.download.csdn.net/

北风之神SOCKET框架组3.2发布:

修改了 ReadObject方法,经过测试.出于性能的考虑和使用的方便 内部采用了DataContractSerializer 序列化.
bool ReadObject(out object obj) 变成了bool ReadObject<T>(out T obj);
继承与FormatClassAttibutes的数据包类不需要[Serializable]标签了.

修改了服务器端 ZYSocketSuper 类.
ZYSocketSuper 的构造方法 里面传入IP地址和端口,一直存在错误.我最近才发觉.抱歉各位

删除了 例4 代码. 因为我觉得 这简直就是误导人.

代码在数据包缓存还不是很完美,特别是处理大型连续分段数据包上.还有待改进.简单的改进理论是使用NetWorkStream 来代替现有的数据包缓冲区.由于没时间,这部分交给大家自己研究吧,但是如果不传文件.那已经基本上都够用了.更何况传文件还有其他的方法.

本打算写一份基于OOP概念的框架模型.但是时间太紧了.最近一直在搞C++ 一直没如愿以偿.
感谢 麦上飞 提供技术支持. Sorry!!

byluyikk@126.com
BLOG:http://blog.csdn.net/luyikk
QQ:547386448

ZYSOCKET 3.2 下载地址:http://luyikk.download.csdn.net/

//----------------------------------以下3.1更新内容-----------------------------------

感谢大家对北风之神SOCKET框架的支持。鼓励。下面是北风之神 3.1的更新内容:

修正BUG:
1.ZYSocketSuper 读取 配置文件的最大连接数 读错问题。
2.ZYSocketSuper 无法断开客户端的问题。
3.BuffList 数据包解析丢失问题。
4.例1,例2.客户端断开忘记释放调用SOCKET.CLOSE()的问题

新增功能
1.添加了一个ReadBytes 构造函数,此函数实现了在数据包在读取前需要回调的方法传入。(可以用来解密,解压缩 等功能)
2.添加了一个BufferFormat 类的构造,此函数实现了在数据包在生成前需要回调的方法传入。(可以用来加密,压缩 等功能)
3.添加了BufferFormat.FormatFCA(object o,FDataExtraHandle dataExtra)静态方法。可以用来在类格式化成数据包的时候进行加

密压缩等功能
4.添加了ZYSocket.Security 命名空间,里面有传统的AES,DES算法的加解密类
5.添加了ZYSocket.Compression命名空间,里面有通过Deflate算法压缩类
6.开发了ReadBytes.Data属性,为ReadBytes里面的BYTE[]对象。值得注意的是 ReadBytes.Length为数据包原始长度,如果要得到解压缩后的数据包长度,请访问ReadByte.Data.length

新增代码
加解密实例测试 项目:演示了 AES DES 以及Deflate 的使用方法。
例3 - 例2的加密版 项目:就是讲例2通过DES 加密进行通讯的例子
连接测试工具 项目:很多朋友问我要连接数量测试工具。我一起的真的丢了。找不到了。所以重新写了一个
例4 项目:好多人让我写一个发送文件的例子,现在能如愿以偿了

byluyikk@126.com
BLOG:http://blog.csdn.net/luyikk
QQ:547386448

ZYSOCKET 3.1 下载地址:http://luyikk.download.csdn.net/

//-----------------------------------------以下为3.0发布内容--------------------------------

北风之神SOCKET框架组3.0说明:

北风之神框架(ZYSOCKETSUPTER) 从1.0开始 就以超强的性能 得到了大家的支持;

北风之神 主要更新以下内容:

1. 一个基于 SocketAsyncEventArgs 的客户端 (ZYSocketClientA.dll)ZYSocket.ClientA.SocketClient

它支持.net 3.0以上版本,还适用于silverlight

性能非常优异,代码量小;

2. 一个数据包缓冲类 ZYSocketShare.dll (ZYSocket.share.BuffList)

BuffList是个性能优秀,线程安全的,数据包缓冲类。而且使用起来实在太方便了。

3.一个数据包格式化类 ZYSocketShare.dll (ZYSocket.share.BufferFormat)

BufferFormat 是个性能优异 功能强大的类,主要功能是讲各种.NET数据结构的数据转换为数据包。

支持对自定义类对象转换。

4.一个.net数据结构格式化类 ZYSocketShare.dll (ZYSocket.share.ReadBytes)

它和BufferFormat 是对应关系,通过这个类你可以轻易将数据包转换成.NET 数据结构,性能优越,功能强大,并可以直接讲数据包转换为对象。

5.FormatClassAttibutes标签。ZYSocketShare.dll(ZYSocket.share.FormatClassAttibutes)

凡是打了此标签的类,并打了Serializable,就刻个通过上面的2个类直接讲对象转换成数据包通过SOCKET发送。FormatClassAttibutes的功能就是用来设置此类的数据包命令的

6.ZySocketSupter 更新:

优化了代码,并更新了对域名支持,以及从配置文件中读取服务配置

本包中包含2个例子

2个例子都有代码注释 总实现代码不超过 100行

第一个是 讲解 控制台程序 使用本框架

第二个是 讲解 WINFROM程序 使用本框架

一下是面向对象数据包的部分代码

  1. //定义通讯的数据包类
  2. usingSystem;
  3. usingSystem.Collections.Generic;
  4. usingSystem.Linq;
  5. usingSystem.Text;
  6. usingZYSocket.share;
  7. namespaceBuffLibrary
  8. {
  9. ///<summary>
  10. ///用于发送消息
  11. ///</summary>
  12. [Serializable]
  13. [FormatClassAttibutes(500)]
  14. publicclassMessage
  15. {
  16. ///<summary>
  17. ///消息类型,1登入失败,2登入成功..其他未定义
  18. ///</summary>
  19. publicintType{get;set;}
  20. ///<summary>
  21. ///消息字符串
  22. ///</summary>
  23. publicstringMessageStr{get;set;}
  24. }
  25. ///<summary>
  26. ///登入数据包
  27. ///</summary>
  28. [Serializable]
  29. [FormatClassAttibutes(1000)]
  30. publicclassLogin
  31. {
  32. ///<summary>
  33. ///用户名
  34. ///</summary>
  35. publicstringUserName{get;set;}
  36. ///<summary>
  37. ///密码
  38. ///</summary>
  39. publicstringPassWord{get;set;}
  40. }
  41. ///<summary>
  42. ///PING数据包
  43. ///</summary>
  44. [Serializable]
  45. [FormatClassAttibutes(800)]
  46. publicclassPing
  47. {
  48. ///<summary>
  49. ///发送的时候记录的时间
  50. ///</summary>
  51. publicDateTimeUserSendTime{get;set;}
  52. ///<summary>
  53. ///服务器接受记录的时间
  54. ///</summary>
  55. publicDateTimeServerReviceTime{get;set;}
  56. }
  57. ///<summary>
  58. ///读取DATASET请求
  59. ///</summary>
  60. [Serializable]
  61. [FormatClassAttibutes(1002)]
  62. publicclassReadDataSet
  63. {
  64. publicstringTableName{get;set;}
  65. publicSystem.Data.DataSetData{get;set;}
  66. }
  67. }
  1. //使用自己定义的数据包类通讯
  2. voidclient_DataOn(byte[]Data)
  3. {
  4. ReadBytesread=newReadBytes(Data);
  5. intlength;
  6. intcmd;
  7. if(read.ReadInt32(outlength)&&read.ReadInt32(outcmd)&&length==read.Length)
  8. {
  9. switch(cmd)
  10. {
  11. case800://PING命令
  12. {
  13. objectpingo;
  14. if(read.ReadObject(outpingo))
  15. {
  16. Pingp=pingoasPing;
  17. if(p!=null)
  18. this.BeginInvoke(newEventHandler((o,x)=>
  19. {
  20. Pingnn=oasPing;
  21. if(nn!=null)
  22. {
  23. toolStripStatusLabel1.Text=string.Format("Ping:{0}({1})",//计算并显示PING
  24. (DateTime.Now-nn.UserSendTime).Milliseconds,
  25. (DateTime.Now-nn.ServerReviceTime).Milliseconds);
  26. }
  27. }),p);
  28. }
  29. }
  30. break;
  31. case1002:
  32. objectdataseto;
  33. if(read.ReadObject(outdataseto))//获取服务器发送过来的DATASET
  34. {
  35. ReadDataSetdox=datasetoasReadDataSet;
  36. if(dox!=null)
  37. {
  38. this.BeginInvoke(newEventHandler((o,x)=>
  39. {
  40. ReadDataSetnn=oasReadDataSet;
  41. if(nn!=null)
  42. {
  43. this.dataGridView1.DataSource=nn.Data.Tables[nn.TableName];//绑定到视图
  44. this.dataGridView1.Update();
  45. }
  46. }),dox);
  47. }
  48. }
  49. break;
  50. }
  51. }
  52. }

这2段代码只是部分代码,

3.0 下载地址

http://download.csdn.net/source/2939736

至于为什么要叫北风之神呢?

因为 最近特别冷,温度突然降低16度,冻死我了。北风吹的我都块痉挛了。 我对着天空喊 北风之神 刮慢点吧。

正因为这个代码这这样的环境下写的,所以 叫做北风之神

#region 补丁:

修正 BuffList类丢失数据包问题!

  1. /*
  2. *北风之神SOCKET框架(ZYSocket)
  3. *BoreySocketFrame(ZYSocket)
  4. *byluyikk@126.com
  5. *Updated2011-1-20
  6. */
  7. usingSystem;
  8. usingSystem.Collections.Generic;
  9. usingSystem.Text;
  10. usingSystem.Threading;
  11. usingSystem.IO;
  12. namespaceZYSocket.share
  13. {
  14. ///<summary>
  15. ///数据包组合类
  16. ///功能描述:保持数据包完整性。
  17. ///(通过互联网发送数据包,实际上是将一个较大的包拆分成诺干小包,此类的功能就是讲诺干小包重新组合成完整的数据包)
  18. ///此类是线程安全的
  19. ///</summary>
  20. publicclassBuffList
  21. {
  22. publicobjectlocklist=newobject();
  23. ///<summary>
  24. ///数据包列表
  25. ///</summary>
  26. publicList<byte>ByteList{get;set;}
  27. privateintcurrent;
  28. privateintlengt;
  29. privateintVlent;
  30. ///<summary>
  31. ///数据包有可能出现的最大长度。如果不想服务器被人攻击到内存崩溃请按实际情况设置
  32. ///</summary>
  33. publicintMaxSize{get;set;}
  34. ///<summary>
  35. ///数据包组合类
  36. ///</summary>
  37. ///<paramname="maxSize">数据包有可能出现的最大长度。如果不想服务器被人攻击到内存崩溃请按实际情况设置</param>
  38. publicBuffList(intmaxSize)
  39. {
  40. MaxSize=maxSize;
  41. lengt=-1;
  42. Vlent=0;
  43. ByteList=newList<byte>();
  44. }
  45. publicvoidReset()
  46. {
  47. Interlocked.Exchange(reflengt,-1);
  48. Interlocked.Exchange(refVlent,0);
  49. Interlocked.Exchange(refcurrent,0);
  50. ByteList.Clear();
  51. }
  52. publicboolInsertByteArray(byte[]Data,intml,outList<byte[]>datax)
  53. {
  54. lock(locklist)
  55. {
  56. datax=newList<byte[]>();
  57. ByteList.AddRange(Data);
  58. Interlocked.Add(refVlent,Data.Length);
  59. if(lengt==-1&&Vlent>ml)
  60. {
  61. intres=0;
  62. for(inti=0;i<ml;i++)
  63. {
  64. inttemp=((int)ByteList[current+i])&0xff;
  65. temp<<=i*8;
  66. res=temp+res;
  67. }
  68. if(res>MaxSize)
  69. {
  70. Reset();
  71. thrownewException("数据包大于预设长度,如果你传入的数据比较大,请设置重新maxSize值");
  72. }
  73. if(res<=0)
  74. {
  75. Reset();
  76. returnfalse;
  77. }
  78. Interlocked.Exchange(reflengt,res);
  79. }
  80. if((Vlent-current)>=lengt)
  81. {
  82. intlengx=lengt;
  83. Interlocked.Exchange(reflengt,-1);
  84. byte[]data=newbyte[lengx];
  85. ByteList.CopyTo(current,data,0,lengx);
  86. datax.Add(data);
  87. Interlocked.Add(refcurrent,lengx);
  88. recopy:
  89. if(current==ByteList.Count)
  90. {
  91. Reset();
  92. returntrue;
  93. }
  94. if(ByteList.Count-current>ml)
  95. {
  96. intres=0;
  97. for(inti=0;i<ml;i++)
  98. {
  99. inttemp=((int)ByteList[current+i])&0xff;
  100. temp<<=i*8;
  101. res=temp+res;
  102. }
  103. if(res>MaxSize)
  104. {
  105. Reset();
  106. thrownewException("数据包大于预设长度,如果你传入的数据比较大,请设置重新maxSize值");
  107. }
  108. if(res<=0)
  109. {
  110. Reset();
  111. returntrue;
  112. }
  113. if(ByteList.Count-current<res)
  114. {
  115. returntrue;
  116. }
  117. data=newbyte[res];
  118. ByteList.CopyTo(current,data,0,res);
  119. datax.Add(data);
  120. Interlocked.Add(refcurrent,res);
  121. gotorecopy;
  122. }
  123. returntrue;
  124. }
  125. else
  126. {
  127. returnfalse;
  128. }
  129. }
  130. }
  131. }
  132. }

修正后的 BuffList类 所需的调用修改:

  1. //BuffList数据包组合类如果不想丢数据就用这个类吧
  2. BuffListbuff=socketAsync.UserTokenasBuffList;
  3. List<byte[]>datax;
  4. if(buff.InsertByteArray(data,4,outdatax))//强力插入数据包,如果数据包组合成功返回TURE并输出数据包
  5. {
  6. if(datax!=null)
  7. {
  8. foreach(byte[]pindatax)
  9. {
  10. DataOn(p,socketAsync);
  11. }
  12. }
  13. }

#endregion

http://blog.csdn.net/luyikk/article/details/6099337

免责声明:文章转载自《ZYSocket 4.3.5 SOCKET框架组 发布[NEW]》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇实时数据集成安装cuda实践下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SQL Server 连接字符串和身份验证

在做数据开发的时候,常常需要用到数据库连接字符串,很多时候都不知道连接字符串中每个字段的具体含义,今天就在这里总结一下,方便以后使用。下面就用一个简单的例子开始 Data Source=(local); Database=WebDB; User ID=WebUser; Password=WebUser; pooling=true; min pool siz...

嵌入式web服务

:boa、thttpd、mini_httpd、shttpd、lighttpd、goaheand、appweb和apache等。 Boa 1.介绍 Boa诞生于1991年,作者Paul Philips。是开源的,应用很广泛,特别适合于嵌入式设备,网上流行程度很广。它的官方网站说boa是最受人喜爱的嵌入式web服务器。功能较为强大,支持认证,cgi等。B...

学习笔记:oracle学习一:oracle11g体系结构之物理存储结构

目录 1、物理存储结构 1.1 数据文件 1.2 控制文件 1.3 日志文件 1.3.1 重做日志文件 1.3.2 归档日志文件 1.4 服务器参数文件 1.4.1 查看服务器参数 1.4.2 修改服务器参数 1.5 密码文件、警告文件和跟踪文件 1.5.1 密码文件 1.5.2 警告文件 1.5.3 跟踪文件 本系列是作为学习...

android环境下的即时通讯

首先了解一下即时通信的概念。通过消息通道 传输消息对象,一个账号发往另外一账号,只要账号在线,可以即时获取到消息,这就是最简单的即使通讯。消息通道可由TCP/IP UDP实现。通俗讲就是把一个人要发送给另外一个人的消息对象(文字,音视频,文件)通过消息通道(C/S实时通信)进行传输的服务。即时通讯应该包括四种形式,在线直传、在线代理、离线代理、离线扩展。在...

2-7-搭建DNS服务器实现域名解析

  学习服务的方法: 了解服务的作用:名称,功能,特点 安装服务 配置文件的位置,端口 服务开启和关闭的脚本 修改配置文件(实战举例) 排错(从上到下,从内到外) ---------------------------------------- 大纲: DNS服务器常见概念 DNS服务器安装及相关配置 实战:配置DNS服务器解析 实战:使用DNS支持递归...

Raft协议--中文论文介绍

本篇博客为著名的 RAFT 一致性算法论文的中文翻译,论文名为《In search of an Understandable Consensus Algorithm (Extended Version)》(寻找一种易于理解的一致性算法)。 Raft 是一种用来管理日志复制的一致性算法。它和 Paxos 的性能和功能是一样的,但是它和 Paxos 的结构不一...