自從推出了SanNiuSignal.DLL,用戶反映還是滿好的;為了更好的服務於大家,我已經修復了很多BUG,同時把這個DLL開源;下面就先來介紹下
使用這個DLL開發出的簡單的通信系統;如圖:
想使用哪個模塊就啟動哪個模塊,可以和客戶形成通信;具體的源碼下載地址1:http://www.sanniub.com/down/html/?6.html 百度網盤下載地址: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