c TCP高效能通訊

2022-01-23 22:33:07 字數 776 閱讀 5125

開篇都是吹牛逼哈。。。

我原本打算使用dotnetty來解決傳輸問題,但是試了下沒有成功,也沒有找到相關問題解決方法,匯出原始碼,好大啊。暫時不想研究,而且是.net core的。最後沒有辦法,就自己封裝了。我就不上**了,已經傳到git上面了,和其它專案。

我主要介紹過程原理,;

1.isocketchannel介面,繼承實現通訊,繼承類封裝socket.

2.外層封裝serversocketchannel,仿造dotnetty服務端,設定socket引數,接收執行緒數,設定資料的解析類及打包的類以及資料接收類。

具體serversocketchannel:

裡面定義了乙個serversockettask,啟動接收連線,採用socketasynceventargs 接收連線,用乙個緩衝池保持物件,每接收乙個就再次接收乙個;

接收連線後,放入到乙個集合中,然後由啟動的多個接收執行緒抽取資料,監測是否有資料讀取,有就讀取,沒有就休眠一下,接收採用緩衝buffer,主要是解決多包資料問題,接收完整一包後還是要合併乙個byte,然後再次傳入給設定的接收類中。

3.socketchannel是解決客戶端,客戶端直接採用socketasynceventargs接收,不用再使用其它方法,畢竟客戶端再同一臺機器不可能成百上千,直接由底層執行緒池接收就可以了。c#的執行緒池有自己的演算法,會動態維護。不用再麻煩處理了。當然我實現了手動控制線程,啟動多個執行緒去接收資料。

其中解決方案下的nethighsocket專案就是通訊實現,但是還需要專案srvnetsocket,通訊介面庫,為啥會有這個庫,我後面博文會簡單說的。

簡單的c TCP通訊

tcp 通訊 2009年8 月23日星期日 伺服器using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system...

高效能的通訊庫 ZeroMQ的幾個高效能特徵

這兩天研究了一下zeromq,號稱史上最好的通訊庫,比rabbitmq快很多,基於c語言開發的,實時流處理sorm的task之間的通訊就是用的zeromq。zeromq在使用模式上支援多種,有req reply,publish subscribe,push pull。下圖是zeromq的架構圖 簡單...

高效能的通訊庫 zeroMQ的幾個高效能特徵

原帖這兩天研究了一下zeromq,號稱史上最好的通訊庫,比rabbitmq快很多,基於c語言開發的,實時流處理sorm的task之間的通訊就是用的zeromq。zeromq在使用模式上支援多種,有req reply,publish subscribe,pipe。下圖是zeromq的架構圖 簡單說明一...