private static void ProtocolsDemo() { INetProtocolProvider protocolProvider = NetProtocolProvider.CreateProvider(); //数据内容打包成字节 byte[] content = new byte[] { 1, 3, 4, 0xfe, 0x01, 0xfd, 0x02 }; byte[] buffer = protocolProvider.Encode(new Packet() { pHeader = new PacketHeader() { packetAttribute = new PacketAttribute() { packetCount = 1, //自定义,指定该消息需要分多少个数据包发送才完成 }, packetId = 0x10 //根据业务自定义 }, pPayload = content //携带的数据内容 }); //使用接收管理缓冲池解析数据包 INetPacketProvider pkgProvider = NetPacketProvider.CreateProvider(1024); bool rt = pkgProvider.SetBlocks(buffer, 0, buffer.Length); rt = pkgProvider.SetBlocks(buffer, 0, buffer.Length); var dePkg = pkgProvider.GetBlocks(); //解析数据包成结构信息 // var dePkg = protocolProvider.Decode(buffer, 0, buffer.Length); }
private static void ProtocolsDemo() { INetProtocolProvider protocolProvider = NetTool.CreateProtocolProvider(); //数据内容打包成字节 byte[] content = new byte[] { 1, 3, 4, 0xfe, 0x01, 0xfd, 0x02 }; byte[] buffer = protocolProvider.Encode(new Packet(1, 0x10, 5, content)); //使用接收管理缓冲池解析数据包 INetPacketProvider pkgProvider = NetTool.CreatePacketsProvider(1024); bool rt = pkgProvider.SetBlocks(buffer, 0, buffer.Length); rt = pkgProvider.SetBlocks(buffer, 0, buffer.Length); var dePkg = pkgProvider.GetBlocks(); //解析数据包成结构信息 // var dePkg = protocolProvider.Decode(buffer, 0, buffer.Length); }
private static void PacketSocketDemo() { int port = 13145; var netServerProvider = NetTool.CreateTcpSever(); INetProtocolProvider netProtocolProvider = NetTool.CreateProtocolProvider(); INetPacketProvider netPacketProvider = NetTool.CreatePacketsProvider(4096 * 32);//最大容量,必须大于发送缓冲区,建议是设置大于8倍以上 int pktCnt = 0; netServerProvider.ReceivedOffsetCallback = new OnReceivedSegmentHandler((SegmentToken session) => { bool isEn = netPacketProvider.SetBlocks(session.Data.buffer, session.Data.offset, session.Data.size); if (isEn == false) { Log.L("entry queue failed"); } List <Packet> packets = netPacketProvider.GetBlocks(); pktCnt += packets.Count; if (packets.Count > 0) { foreach (var pkt in packets) { Log.L(Encoding.UTF8.GetString(pkt.message)); } } else { Log.L("got null item from queue"); } Log.L("pktCnt:" + pktCnt); }); bool isStart = netServerProvider.Start(port); if (isStart) { var netClientProvider = NetTool.CreateTcpClient(); bool isConneted = netClientProvider.ConnectTo(port, "127.0.0.1"); if (isConneted) { //for (int i = 0; i < content.Length; ++i) //{ // content[i] = (byte)(i > 255 ? 255 : i); //} int i = 0; for (; i < 100000; ++i) { byte[] content = Encoding.UTF8.GetBytes("hello 哈哈 http://anystore.bouyeijiang.com" + DateTime.Now + i.ToString()); byte[] buffer = netProtocolProvider.Encode(new Packet(1, 0x10, 5, content)); netClientProvider.Send(new SegmentOffset(buffer)); } } Console.ReadKey(); } }