標籤:blog http java 使用 檔案 資料
SanNiuSignal是一個基於非同步socket的完全免費DLL;它裡面封裝了Client,Server以及UDP;有了這個DLL;使用者不用去關心心跳;粘包
;組包;傳送檔案等繁瑣的事情;大家只要簡單的幾步就能實現強大的通訊系統;能協助到大家是本人覺得最幸福的事情,也希望大家
在用的過程中找出DLL中不足的地方;好改正;此DLL的蘋果版和java版正在努力開發中......交流QQ:365368248;此示範源碼:http://pan.baidu.com/s/1eQw1npw 裡麵包括了SanNiuSignal.DLL
下面為大家介紹一下如何使用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/1eQw1npw 裡麵包括了SanNiuSignal.DLL