c#編寫的基於Socket的異步通訊零碎--SanNiuSignal.DLL已開源。本站提示廣大學習愛好者:(c#編寫的基於Socket的異步通訊零碎--SanNiuSignal.DLL已開源)文章只能為提供參考,不一定能成為您想要的結果。以下是c#編寫的基於Socket的異步通訊零碎--SanNiuSignal.DLL已開源正文
參考頁面:
http://www.yuanjiaocheng.net/CSharp/csharp-Static.html
http://www.yuanjiaocheng.net/CSharp/csharp-Anonymous-method.html
http://www.yuanjiaocheng.net/CSharp/csharp-nullable.html
http://www.yuanjiaocheng.net/CSharp/csharp-var.html
http://www.yuanjiaocheng.net/CSharp/csharp-linq.html
自從推出了SanNiuSignal.DLL,用戶反映還是滿好的;為了更好的服務於大家,我曾經修復了很多BUG,同時把這個DLL開源;上面就先來引見下
運用這個DLL開收回的復雜的通訊零碎;如圖:
想運用哪個模塊就啟動哪個模塊,可以和客戶構成通訊; 百度網盤下載地址:http://pan.baidu.com/s/1i346GML 外面包括了SanNiuSignal.DLL的源碼以及它的一個運用例子;有不會的請加QQ群:426414437交流,當前更新
的DLL就在群裡發布了.......上面是關於SanNiuSignal.DLL的源碼詳細引見
SanNiuSignal是一個基於異步socket的完全收費DLL;它外面封裝了Client,Server以及UDP;有了這個DLL;用戶不必去關懷心跳;粘包
;組包;發送文件等繁瑣的事情;大家只需復雜的幾步就能完成弱小的通訊零碎;能協助到大家是自己覺得最幸福的事情,也希望大家
在用的進程中找出DLL中缺乏的中央;好矯正;此DLL的蘋果版和java版正在努力開發中......
上面為大家引見一下 如何運用SanNiuSignal.
1 ) :TCPServer服務器,經過靜態辦法TxStart.startServer注冊成功服務器ITxServer;然後經過ITxServer設置好各種屬性;最後啟動
ITxServer.StartEngine();就可以了;詳細可以到demo裡去看;絕對來說比擬復雜,上面來說一下需求留意的中央
一:ITxServer.BufferSize,就是接納數據緩沖區大小;默許為1kb,不要小於50字節,而且要和客戶端設置成一樣;否則會呈現不可預知
的錯誤;這個緩沖區的大小,不會影響你每次發送數據的大小;大小只能進步你的發送速度
二:ITxServer.sendMessage 發送前先判別此IPEndPoint客戶端能否在線;由於假如不在線等狀況發作;此辦法沒有任何音訊發生;如
果發送成功並且對方曾經收到;會觸發發送成功的事情;
三:用戶可以經過ITxServer.FileLog記載服務器的運轉信息;
2 ) :TCPClient客戶端,經過靜態辦法TxStart.startClient(服務器地址或網址, 服務器端口號)注冊成功客戶端ITxClient;然後經過
ITxClient設置好各種屬性;最後啟動ITxClient.StartEngine();跟服務器啟動差不多;詳細可以到demo裡去看;客戶端要留意的一些地
方
一:假如非服務器強迫封閉客戶端的狀況下,掉線的話,客戶端默許是要重連的;他的原理是這樣的,每10秒重連一次;重連
ITxClient.ReconnectMax次假如失敗;會自動封閉客戶端引擎;在重連的進程中;你可以改動客戶端銜接服務器的IP地址和端口號;但
假如當斷開的時分不想重連;可以設置ITxClient.ReconnectMax=0;
二:登錄篇,在引擎啟動之前,用戶可以設置ITxClient.OutTime來設置超時時間;默許為10秒,也就是說10秒之內一定會有一個登錄後果
;登錄成功或登錄失敗。有了登錄後果會觸發登錄後果事情;
3 ) :Udp引擎,經過靜態辦法TxStart.startUdp()注冊成功UDP--IUdpTx;然後經過IUdpTx設置好各種屬性;最後啟動
IUdpTx.StartEngine();假如在啟動之前要綁定端口號,請在這裡設置IUdpTx.Port;否則是隨機運用本地端口;無論是UDP還是服務器和
客戶端;它們的很多辦法和屬性以及事情都是相反的,由於他們都承繼了通訊零碎的基接口ITxBase;上面是UDP引擎要留意的中央
一:UDP的優勢在於速度快但不太牢靠;所以有些屬性不能設置的太過,如IUdpTx.BufferSize;默許為1KB,假如在廣域網上發送信息,
緩沖區大小不要超越默許值;否則數據會喪失,假如一次性數據大於1KB;也沒事,零碎會自動分包發送;不太會丟包。
4 ) :文件發送零碎,經過靜態辦法FileStart.StartFileSend(IFileSendMust)生成一個文件發送零碎IFileSend;其中IFileSendMust是
必需完成的一個接口;詳細參照demo;然後經過IFileSend設置好各種屬性;發送還是要經過後面的三個引擎零碎發送的;如
ITxClient.SendFile 這時會前往一個文件標簽,是一個整數;IFileSend可以經過操作這個標簽來操作這個正在發送的文件;接納文件
零碎也一樣;也是經過文件標簽來操作;文件續傳也是一樣,也要經過後面的三個通訊引擎零碎停止續傳;由於文件零碎不能決議用戶
經過哪個通訊零碎停止續傳的;例如IUdpTx.ContinueFile停止續傳;大家也可以試一下 掉線之後重新銜接也可以續傳;
5 ) :文件接納零碎,經過靜態辦法FileStart.StartFileReceive(IFileReceiveMust)生成一個文件接納零碎IFileReceive;其中
IFileReceiveMust是接納方必需完成的一個接口;詳細參照demo;然後經過IFileReceive設置好各種屬性;上面來講講文件零碎要留意
的幾個要點
一:每個文件都有一個文件標簽,發送零碎和接納零碎是經過控制這個標簽來控制這個文件的;假如是同一個文件傳輸,標簽也一樣的;
二:要留意屬性BufferSize緩沖區大小,他是代表一次傳送的字節數;假如這個文件緩沖區越大,傳輸速度越快;詳細要設置成多少,大
家自己去調試;TCP傳輸的話普通可以設置成比擬大,但UDP的話這個不要超越1KB;所以傳輸大文件盡量不要用UDP這種不牢靠的東東;
三:當網絡等各種緣由中綴文件的時分;會觸發文件中綴事情;文件自動處於暫停發送或接納形態;等候續傳;續傳的發送方,假如對方
贊同續傳;對方將不會觸發續傳開端的辦法;別的大家可以經過demo裡去發現;
總結:
其實這個DLL絕對來講是比擬復雜的;大家只需掌握這五個接口;1:ITxServer TCP服務器接口 2:ITxClient TCP客戶端接口 3:IUdpTx
UDP接口 4:IFileSend 文件發送方接口 5:IFileReceive 文件接納方接口 後面三個接口是經過TxStart啟動;前面二個文件接口
是經過FileStart啟動
明天先講到這裡;希望這個DLL對大家有所協助;缺乏之處希望經過QQ或博客園大家一同交流;謝謝
此演示源碼下載地址:http://pan.baidu.com/s/1i346GML 外面包括了SanNiuSignal.DLL