日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c# TCP高性能通信

發布時間:2023/12/1 C# 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c# TCP高性能通信 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開篇都是吹牛逼哈。。。

我原本打算使用dotnetty來解決傳輸問題,但是試了下沒有成功,也沒有找到相關問題解決方法,導出源碼,好大啊。暫時不想研究,而且是.Net Core的。最后沒有辦法,就自己封裝了。我就不上代碼了,已經傳到GIT上面了,和其它項目。

我主要介紹過程原理,;

1.ISocketChannel接口,繼承實現通信,繼承類封裝Socket.

2.外層封裝ServerSocketChannel,仿造dotnetty服務端,設置socket參數,接收線程數,設置數據的解析類及打包的類以及數據接收類。

具體ServerSocketChannel:

里面定義了一個ServerSocketTask,啟動接收連接,采用SocketAsyncEventArgs 接收連接,用一個緩沖池保持對象,每接收一個就再次接收一個;

接收連接后,放入到一個集合中,然后由啟動的多個接收線程抽取數據,監測是否有數據讀取,有就讀取,沒有就休眠一下,接收采用緩沖buffer,主要是解決多包數據問題,接收完整一包后還是要合并一個byte[],然后再次傳入給設置的接收類中。

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

項目地址:https://github.com/jinyuttt/StremCloud.git

其中解決方案下的NetHighSocket項目就是通信實現,但是還需要項目SrvNetSocket,通信接口庫,為啥會有這個庫,我后面博文會簡單說的。

轉載于:https://www.cnblogs.com/jinyu20180311/p/9788576.html

總結

以上是生活随笔為你收集整理的c# TCP高性能通信的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。