程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#編寫的基於Socket的異步通信系統--SanNiuSignal.DLL已開源,

c#編寫的基於Socket的異步通信系統--SanNiuSignal.DLL已開源,

編輯:C#入門知識

c#編寫的基於Socket的異步通信系統--SanNiuSignal.DLL已開源,


自從推出了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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved