有时候可能大家不太想用RRQM组件,只想用原生Socket实现。那怎么使用适配器呢?

    实际上也比较简单。但是依然要引用RRQMSocket库,然后独立使用适配器即可。

    1. [Fact]
    2. public void AdapterCallbackShouldBeOk()
    3. {
    4. FixedHeaderPackageAdapter adapter = new FixedHeaderPackageAdapter();
    5. bool sendCallBack = false;
    6. bool receivedCallBack = false;
    7. byte[] sentData=null;
    8. adapter.SendCallBack = (buffer,offset,length,async) =>
    9. {
    10. //此处会回调发送的最终调用。例如:此处使用固定包头,则发送的数据为4+n的封装。
    11. sentData = new byte[length];
    12. Array.Copy(buffer,offset,sentData,0,length);
    13. if (length==4+4)
    14. {
    15. sendCallBack = true;
    16. }
    17. };
    18. adapter.ReceivedCallBack += (byteBlock,requestInfo) =>
    19. {
    20. //此处会回调接收的最终触发,例如:此处使用的固定包头,会解析4+n的数据为n。
    21. if (byteBlock.Len==4)
    22. {
    23. receivedCallBack = true;
    24. }
    25. };
    26. byte[] data = Encoding.UTF8.GetBytes("RRQM");
    27. adapter.SendInput(data,0,data.Length,false);//模拟输入,会在SendCallBack中输出最终要发送的数据。
    28. using (ByteBlock block=new ByteBlock())
    29. {
    30. block.Write(sentData);
    31. block.Pos = 0;
    32. adapter.ReceivedInput(block);//模拟输出,会在ReceivedCallBack中输出最终收到的实际数据。
    33. }
    34. Assert.True(sendCallBack);
    35. Assert.True(receivedCallBack);
    36. }