安全UDP通讯(完全源码:))(300分)

  • 主题发起人 主题发起人 mmzmagic
  • 开始时间 开始时间
M

mmzmagic

Unregistered / Unconfirmed
GUEST, unregistred user!
大家都知道UDP比TCP好用发送速度快很多,程序写起来也简单的多,可缺点也同样明显UDP容易丢包,而且不能自动重发也不能自动组包没有数据安全机制,发的包不能超过2K(INDY,NMUDP等控件都是这样)否则就出错。
可很多需求中又需要发送大量数据包并且需要保证速度(如语音和视频通讯或者点对点点播服务。)而且有些重要的数据不允许丢包这个时候就需要安全UDP了。
有朋友可能会说那你干嘛不用TCP?TCP不就是安全的UDP吗?
主要因为
1、TCP无法很好的穿透NAT,来进行点对点通讯。
2、通讯过程中需要某些重要的命令不丢失,TCP需要首先建立连接,每个包都需要确认。这样发送速度会慢不少。
所以偶需要一个安全的UDP可以发送任意大小包,可以保证某些重要的包不会丢失,并且可以轻松穿透NAT来进行点对点通讯。
网上四处寻找未果SO自己动手写了一个。具有以下功能(本类是站在前人的肩膀上实现,基类为偶稍加修改过的NMUDP)
1、自动分包组包
2、支持一次性发送任意大小的包
3、支持安全控制
4、根据丢包率和网速度动态控制发包速度(因时间的局限此功能未很好的实现)
5、对于用户透明的接口(开发人员不用关心实现细节可以和使用其它UDP控件一样简单的使用本类)

接口的简单说明,使用本类很简单
当想要发送大数据包或者具有安全控制的数据包就使用方法
SafeSendBuff
即可:)
当然接收方必须使用本类(即服务端。因为偶需要自动处理分包、组包、重发等细节)
给事件成员OnDataCase付值即可该事件是接收到数据时触发

具体使用方法请见演示程序
DemoClient.exe 为接收窗体
DemoServer.exe 为发送窗体
发送202575字节的东东需要3秒时间:(
听同事说C++有不少此方面的代码,不过我找了DELPHI方面的没找到。
现在安全控制时的发送速度比较慢因为智能根据网络流量调整的功能还没时间去弄。
安全UDP的用途十分广泛,希望对此有兴趣的朋友能和偶一起完善它。
偶准备把它用于点对点通讯程序上:)
http://www.2ccc.com/article.asp?articleid=3154

最后支持DELPHI,支持盒子,支持开源,共同提高、共同进步!
本代码为免费代码,您可以随意的修改和传播它:)只是希望在改进它后给偶一份改进后的代码。

开发者 马敏钊 QQ 22900104 MAIL: mmzmagic@sina.com

下载地址:
http://www.2ccc.com/article.asp?articleid=3420
 
沙发!!!
 
他一次只能发2k 但是我们可以发多次 发完以后要校验一下,我就是这么做的
 
2k都大,最好一次发512字节
 
非常佩服楼主
 
多谢楼主呀
 
在Internet上傳輸最好在512K內
 
鳄鱼先生:
为什么“在Internet上傳輸最好在512K內”呢?
为什么会得出这么个结论呢?
 
[:D]精彩,收藏
 
呵呵,谢谢楼主共享了.好人一个
 
谢谢
这样的东西太少了
 
大家都来完善一下吧
 
真的热情啊,好意接受
 
精彩,收藏
 
一直在找这个东东
 
[?]我使用一次发4096。也正常
 
后退
顶部