最近做视频传输项目,碰到大数据量的传输问题,vb自带的控件效率太低了,因此自己做了一个dll,直接在vb中使用,不需要注册控件,免费。传输测试:
样本:7976kb的数据
VB控件:24kb/s、34kb/s
我的dll:80kb/s、95kb/s明显高于原有的,本来还有一个方案,测试中最高可以达到123kb/s,不过耗费cpu太多最终放弃了。Public Declare Function Sock_Create Lib "PackSock.dll" (ByRef hPackSock As Long) As Long
Public Declare Function Sock_Destroy Lib "PackSock.dll" (ByRef hPackSock As Long) As LongPublic Declare Function Sock_OpenSock Lib "PackSock.dll" (ByVal hPackSock As Long, ByVal hwnd As Long) As Long
Public Declare Function Sock_Listen Lib "PackSock.dll" (ByVal hPackSock As Long, ByVal Port As Long) As Long
Public Declare Function Sock_Accept Lib "PackSock.dll" (ByVal hPackSock As Long, ByVal hAcceptSock As Long) As Long
Public Declare Function Sock_Close Lib "PackSock.dll" (ByVal hPackSock As Long) As Long
Public Declare Function Sock_Connect Lib "PackSock.dll" (ByVal hPackSock As Long, ByVal ServerName As String, ByVal Port As Long) As Long
Public Declare Function Sock_Send Lib "PackSock.dll" (ByVal hPackSock As Long, ByRef lpData As Byte, ByVal DataLen As Long) As Long
Public Declare Function Sock_GetState Lib "PackSock.dll" (ByVal hPackSock As Long) As Long

解决方案 »

  1.   

    ding在哪呢
    [email protected]谢谢楼主
      

  2.   

    VB控件:24kb/s、34kb/s
    我的dll:80kb/s、95kb/s
    =============================
    这是不可能的,我将文件拆开来发,在正常的情况下绝不会少于40K,做过这方面的你们应该都心里最明白,(如果你开着BT的话那最多就是一两K)至于你的那个DLL能快一半,我想是用了多线程,我找了一个多线程的例子,正在结合winsock编程,我相信理论上一定能达到80K以上,winsock是网络中最底层的控件,它的意义在于普及性而非效率,而效率我们可以通过代码来改善它
      

  3.   

    [email protected],我想要一个正好我在做
      

  4.   

    不知道能不能发送超过8k的数据,winsock的缓冲区只有8k左右,我的文件都无法进行传输,
      

  5.   

    来一个看看 [email protected]
      

  6.   

    谢先了!
    支持楼主的共享精神[email protected]
      

  7.   

    楼主真爽快!
    [email protected]
      

  8.   

    我已经发了给了大家,后面还想要的请到
    ftp://zxdvr.vicp.net 下载,
    需要最新版本的再跟我联系
      

  9.   

    你这么快啊,刚才我没有做好ftp服务器,现在好了,自由连接吧大家有好的建议或者改进想法请告诉我,交流才有进步!
      

  10.   

    例子VB代码中的两个函数
    OnFileRecived和OnFileSent我在测试的时候屏蔽掉了显示数据的代码,想看到每一帧数据的收发情况的,把相应的屏蔽去掉即可。不好意思啊,各位~
    这个DLL我主要是用来传输视频流的,传输一般的文件更加没有问题,请放心好了。
      

  11.   

    今天测试了一天,内核做了很多优化,精简了接口,只用8个函数就完全搞定,近期不会有大的改动了。速度现在可以达到110-140kb/s,要的话请留下邮箱
      

  12.   

    Sock_Create
    Sock_Destroy
    Sock_Listen
    Sock_Accept
    Sock_Close
    Sock_Connect
    Sock_Send
    Sock_GetState
    Sock_GetReceivedDataVB的演示程序也做了改进,直观多了,可以看到当前平均数据速率。
      

  13.   

    问一下:这个PackSock.DLL是不是依赖于winsock.dll或WS2_32.DLL?我想答案是肯定的。
      

  14.   

    是winnet.DLL(忘了反正取近似的名字)
    将它改个名字然后在模块中声明调用即可
      

  15.   

    好东西啊!希望楼主给我发一个,我正在郁闷中呢,前段时间写的文件自动更新和数据传输的软件用的就是Winsock 就是速度比较慢,没有办法,这回好了!哈哈!
    先谢谢楼主了!我的mail: [email protected]
      

  16.   

    dll? 假如我想知道是否收到数据怎么办? 不至于用时钟查询吧?
      

  17.   

    我现在页也要做视频传输啊,可是一点头绪都没,楼主能不能发个哈,小弟E_mail:[email protected],
      

  18.   

    能不能给我发一个:[email protected]
      

  19.   

    此DLL依赖于Wsock32.dll,假如收到消息之后会有一个消息给你。Public Function OnFileRecived(ByVal hSock As Long, ByVal DataSize As Long)
      Dim buf() As Byte
      '得到数据
      ReDim buf(DataSize) As Byte
      Sock_GetReceivedData hPackSockAccept, buf(0), DataSize
    (后面的代码作为处理数据用的,省略...)
      

  20.   

    好了,我把最新的1.2放到了ftp,帮我测试一下,谢谢,PackSock 1.2 (2004/05/10)
    + 加入IP地址解析功能,可以直接使用机器名称进行连接
    - 去掉了部分接口函数,把他们集成到现有函数中
    * 优化接收数据的接口,更加紧凑
    ! 测试中发现传输率有较大的浮动,实验数据表明,从50-90kb之间浮动,
      后面的测试为110-140kb/s
      

  21.   

    [email protected]学习学习。。
      

  22.   

    [email protected]
    我也在用Winsock开发文件传送的项目
    一起研究研究
      

  23.   

    楼主真好,给我一份吧。[email protected]
      

  24.   

    给我一份:[email protected] 谢谢!
      

  25.   

    交流交流,给我一份,[email protected],试用后马上回复你。
      

  26.   

    谢谢楼主!来一份
    [email protected]
    [email protected]
      

  27.   

    多谢楼主!给我来一份吧!
    [email protected]
      

  28.   

    Thanks 楼主!给我也来一份吧!
    [email protected]
      

  29.   

    谢谢楼主给我也来一份。谢谢了
    [email protected]
      

  30.   

    多谢楼主,来一份。
    [email protected]
      

  31.   

    我已经发出去给大家了,帮忙测试,我这几天正在将它用在视频传输项目中,如果没有bug的话,就没有什么修改了,该优化的东西我都做了。
      

  32.   

    非常感谢楼主。给我也来一份。
    [email protected]
      

  33.   

    为什么要这样呢?我用VB6完全封装winsock api自己了一个activex dll,效果很好。而且网络上更好的很多源代码。
      

  34.   

    当然用API方法了
    VB是垃圾!!
      

  35.   

    给我一份
    [email protected] 谢
      

  36.   

    我也想测一下,看有没有达到那个效果
    [email protected]
      

  37.   

    [email protected]
    3x,谢谢楼主了
    学习中
      

  38.   

    斑竹:请发给我一份,谢谢!!!
    [email protected]
      

  39.   

    已经发送了,请查收一下。优点:
    1、使用简单,就只有几个函数
    2、速度快,达到110-140kb/s,公司多人上网下载东西的时候,仍可以达到80-90kb/s
    3、一次发送一次接收,有内部的封包进行处理,对用户是透明的
    4、不需要注册控件,当作普通API直接使用就可以
      

  40.   

    我也需要, 麻烦你也发一份给我, 谢谢[email protected]
      

  41.   

    [email protected]
     麻烦你也发一份给我, 谢谢!
      

  42.   

    楼主,你的FTP连不上,也给我来一份。
    [email protected]
      

  43.   

    //当然用API方法了
    //VB是垃圾!!我晕,这种矛盾的话都说得出来……
      

  44.   

    给我发一份好吗?
    [email protected]
      

  45.   

    to:pigpag(噼里啪啦 - How to prepare for the TOEFL test?) ( ) 赞同你的看法
      

  46.   

    能给我发一份吗?谢谢![email protected]控件在VB中只能传输字符串,但在VC中可支持传输结构!你的Dll可以传输结构吗?
      

  47.   

    我写的封装winsock api的ActiveX DLL可以传输任何VB类型,包括Byte Array(字节数组),这个技术我3年前就实现了,何必一定要VC++呢???
      

  48.   

    我已经发过去给大家了,其实传输结构也很简单的。banguo(半果) :可以这样做,
    dim rect as rect
    dim buf(len(rect)) as byte 
    copymemery buf(0),rect,len(rect)
    Sock_Send hPackSock,buf(0),len(rect)这样就把结构发送出去了enmity(灵感之源) :
    其实我之所以用VC,是因为它可以做多线程,vb虽然也可以用一些技巧来实现多线程,但是我觉得没有VC来的稳定,再说了,这个库的目的是提供数据高速传输,用VC来做底层效率相对来说高一些,并且下一个版本我打算将完成端口放进去(因为我做的一个大规模视频主机要用到),用VC也更方便开发,不足之处,请指正。(ps:其实相对而言,VB还是我最常用的工具)
      

  49.   

    谢谢~~我也来一份吧~
    [email protected]
      

  50.   

    来晚了。不知道到还有没有?
    [email protected]
    有VB例子吗?
      

  51.   

    我来迟了,希望还能赶得上
    [email protected]
      

  52.   

    能发给我一份吗?[email protected]
      

  53.   

    我也要啊,谢谢!
    [email protected]
      

  54.   

    我也要一个,谢谢搂主.最好有vb例子。
    [email protected]
      

  55.   

    谢谢楼主[email protected]
      

  56.   


    [email protected]谢谢~~~~我有空间,比较稳定,等发给我以后我给你放上去~
      

  57.   

    公司封了ftp端口,发一个吧
    [email protected]
      

  58.   

    请给小弟发一个,谢谢[email protected]
      

  59.   

    DLL是用什么写的,有源码吗??
      

  60.   

    给我也发一个,谢谢了
    [email protected]
      

  61.   

    楼主,你真是雪中送炭,我最近就在为接收网络摄像机传来的图像流,不知如何分包接收并把它显示出来而发愁。能否把这.DLL发份给我。如果楼主有兴趣的话也可以试一下我们的网络摄像机。http://211.96.22.78,把传来的图像显示在VB的pictureBox中。也可以交流一下。QQ:29582579
      

  62.   

    楼主:也发一份代码给我吧。[email protected],学生先谢了。
      

  63.   

    楼主:也发一份代码给我吧。[email protected],多谢!
      

  64.   

    来一份,[email protected],3Q!
      

  65.   

    楼主,谢啦。你的ftp用户帐号和密码呢?[email protected]
      

  66.   

    楼主,我也要一份,[email protected] 谢谢
      

  67.   

    能否给我一份,我正在做这方面的,谢谢[email protected]多谢搂住啦
      

  68.   

    能否给我一份,我正在做这方面的,谢谢[email protected]
    多谢搂住啦
      

  69.   

    楼主,我使用你的DEMO,怎么偶尔会弹出"该程序执行了非法操作,即将关闭"的对话框,有时却是好好的.我用的系统是:WIN2K+SP4   VB6.0+SP5
      

  70.   

    这里有一个类的源代码,替换VB的Winsock Control