来源:一只呆毛 发布时间:2018-11-21 15:39:39 阅读量:1383
我得出的结论:(2017年3月29日)
1.DotNetty 只能通过 vs 2017 进行加载;(vs 2013添加项目后报错:vs error : 项目的默认 XML 命名空间必须为 MSBuild XML 命名空间
—— 去github上找是否有人提问,发现两个关键信息如下图——>于是从nuget着手!)
2.不能使用marshal进行通信。(Netty是可以的,通过JBoss的Marshalling进行实现。)
1.搭建测试项目(原先用winForm程序进行测试,发现不好使,不方便输出一些信息。遂改成用ConsoleApp进行测试)
2.仿照Example文件夹中的例子进行编码(这应该是除了网上的实例外最好的教科书了),结果发送后执行ChannelReadComplete方法但是不执行ChannelRead方法。(估计是编码不对应的原因,server端用marshal,client端用LengthFieldBasedFrameDecoder,具体原因估计要去研究Netty了。。)
关于Marshall的解决方案和探讨
既然DotNetty没有现成的Marshall,那么有几个思路:
1.jBoss-Marshall C# 去搜索 | 别人写好的Marshall C#版本(找到微软有Marshall,但是和 DotNetty 中IChannel对应不上)
2.通过JBoss-Marshall的源码去尝试用C#翻译,但是发现太底层太复杂了,根本看不懂;
3.用抓包去看编码的内容。然而基础太弱根本没有看懂。
---------------------