有时候可能大家不太想用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);
}