?? readme.txt
字號(hào):
UDP安全傳輸(完整源碼)
大家都知道UDP比TCP好用發(fā)送速度快很多,程序?qū)懫饋?lái)也簡(jiǎn)單的多,可缺點(diǎn)也同樣明顯UDP容易丟包,而且不能自動(dòng)重發(fā)也不能自動(dòng)組包沒(méi)有數(shù)據(jù)安全機(jī)制,發(fā)的包不能超過(guò)2K(INDY,NMUDP等控件都是這樣)否則就出錯(cuò)。
可很多需求中又需要發(fā)送大量數(shù)據(jù)包并且需要保證速度(如語(yǔ)音和視頻通訊或者點(diǎn)對(duì)點(diǎn)點(diǎn)播服務(wù)。)而且有些重要的數(shù)據(jù)不允許丟包這個(gè)時(shí)候就需要安全UDP了。
有朋友可能會(huì)說(shuō)那你干嘛不用TCP?TCP不就是安全的UDP嗎?
主要因?yàn)? 1、TCP無(wú)法很好的穿透NAT,來(lái)進(jìn)行點(diǎn)對(duì)點(diǎn)通訊。
2、通訊過(guò)程中需要某些重要的命令不丟失,TCP需要首先建立連接,每個(gè)包都需要確認(rèn)。這樣發(fā)送速度會(huì)慢不少。
所以偶需要一個(gè)安全的UDP可以發(fā)送任意大小包,可以保證某些重要的包不會(huì)丟失,并且可以輕松穿透NAT來(lái)進(jìn)行點(diǎn)對(duì)點(diǎn)通訊。
網(wǎng)上四處尋找未果SO自己動(dòng)手寫了一個(gè)。具有以下功能(本類是站在前人的肩膀上實(shí)現(xiàn),基類為偶稍加修改過(guò)的NMUDP)
1、自動(dòng)分包組包
2、支持一次性發(fā)送任意大小的包
3、支持安全控制
4、根據(jù)丟包率和網(wǎng)速度動(dòng)態(tài)控制發(fā)包速度(因時(shí)間的局限此功能未很好的實(shí)現(xiàn))
5、對(duì)于用戶透明的接口(開發(fā)人員不用關(guān)心實(shí)現(xiàn)細(xì)節(jié)可以和使用其它UDP控件一樣簡(jiǎn)單的使用本類)
接口的簡(jiǎn)單說(shuō)明,使用本類很簡(jiǎn)單
當(dāng)想要發(fā)送大數(shù)據(jù)包或者具有安全控制的數(shù)據(jù)包就使用方法
SafeSendBuff
即可:)
當(dāng)然接收方必須使用本類(即服務(wù)端。因?yàn)榕夹枰詣?dòng)處理分包、組包、重發(fā)等細(xì)節(jié))
給事件成員OnDataCase付值即可該事件是接收到數(shù)據(jù)時(shí)觸發(fā)
具體使用方法請(qǐng)見演示程序
DemoClient.exe 為接收窗體
DemoServer.exe 為發(fā)送窗體
發(fā)送202575字節(jié)的東東需要3秒時(shí)間:(
聽同事說(shuō)C++有不少此方面的代碼,不過(guò)我找了DELPHI方面的沒(méi)找到。
現(xiàn)在安全控制時(shí)的發(fā)送速度比較慢因?yàn)橹悄芨鶕?jù)網(wǎng)絡(luò)流量調(diào)整的功能還沒(méi)時(shí)間去弄。
安全UDP的用途十分廣泛,希望對(duì)此有興趣的朋友能和偶一起完善它。
偶準(zhǔn)備把它用于點(diǎn)對(duì)點(diǎn)通訊程序上:)
http://www.2ccc.com/article.asp?articleid=3154
最后支持DELPHI,支持盒子,支持開源,共同提高、共同進(jìn)步!
本代碼為免費(fèi)代碼,您可以隨意的修改和傳播它:)只是希望在改進(jìn)它后給偶一份改進(jìn)后的代碼。
開發(fā)者 馬敏釗 QQ 22900104 MAIL: mmzmagic@sina.com
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -