項目地址:https://github.com/kerryjiang/SuperSocket.ClientEngine
其中需要引入的SuperSocket.ProtoBase項目:SuperSocket.ProtoBase是流數據的一個協議分析庫。
地址:https://github.com/kerryjiang/SuperSocket.ProtoBase
用法:
1、根據你的網絡協議創建ReceiveFilter的實現。
SuperSocket.ClientEngine提供了一些有用的基本ReceiveFilter類(在命名空間“SuperSocket.ProtoBase”下),以幫助您簡化協議分析:
- TerminatorReceiveFilter ,結束符協議
- CountSpliterReceiveFilter ,固定數量分隔符協議
- FixedSizeReceiveFilter, 固定請求大小的協議
- BeginEndMarkReceiveFilter,帶起止符的協議
- FixedHeaderReceiveFilter, 頭部格式固定並且包含內容長度的協議
基於SuperSocket.ClientEngine提供的基本接收過濾器,您應該根據你自己協議的詳細信息來設計您自己的ReceiveFilter:
class MyReceiveFilter : TerminatorReceiveFilter<StringPackageInfo> { public MyReceiveFilter() : base(Encoding.ASCII.GetBytes("||")) // two vertical bars as package terminator { } // other code you need implement according yoru protocol details }
2、創建EasyClient實例,並使用前一步中創建的ReceiveFilter來初始化它。
var client = new EasyClient(); // Initialize the client with the receive filter and request handler client.Initialize(new MyReceiveFilter(), (request) => { // handle the received request Console.WriteLine(request.Key); });
3、建立連接,然后開始通信。
// Connect to the server var connected = await client.ConnectAsync(new IPEndPoint(IPAddress.Parse("192.168.10.11"), 25)); if (connected) { // Send data to the server client.Send(Encoding.ASCII.GetBytes("LOGIN kerry")); }