有时候可能大家不太想用RRQM组件,只想用原生Socket实现。那怎么使用适配器呢?
实际上也比较简单。但是依然要引用RRQMSocket库,然后独立使用适配器即可。
[Fact]public void AdapterCallbackShouldBeOk(){FixedHeaderPackageAdapter adapter = new FixedHeaderPackageAdapter();bool sendCallBack = false;bool receivedCallBack = false;byte[] sentData=null;adapter.SendCallBack = (buffer,offset,length,async) =>{//此处会回调发送的最终调用。例如:此处使用固定包头,则发送的数据为4+n的封装。sentData = new byte[length];Array.Copy(buffer,offset,sentData,0,length);if (length==4+4){sendCallBack = true;}};adapter.ReceivedCallBack += (byteBlock,requestInfo) =>{//此处会回调接收的最终触发,例如:此处使用的固定包头,会解析4+n的数据为n。if (byteBlock.Len==4){receivedCallBack = true;}};byte[] data = Encoding.UTF8.GetBytes("RRQM");adapter.SendInput(data,0,data.Length,false);//模拟输入,会在SendCallBack中输出最终要发送的数据。using (ByteBlock block=new ByteBlock()){block.Write(sentData);block.Pos = 0;adapter.ReceivedInput(block);//模拟输出,会在ReceivedCallBack中输出最终收到的实际数据。}Assert.True(sendCallBack);Assert.True(receivedCallBack);}
