以下是DotNetty開源項目
我得出的結論:(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.用抓包去看編碼的內容。然而基礎太弱根本沒有看懂。