本帖最后由 jbwd1 于 2012-03-30 21:09:15 编辑

解决方案 »

  1.   

    1.就VB那段代码,设置
    ReDim SendVideo(FileLength)时应该改为ReDim SendVideo(1 to FileLength) 要不长度多了一位,
    另外,大文件连续发送,
    Open "Video.bmp" For Binary As #1
    下面加上doevents这种大文件,最好分成小块发送。第一次发送时告诉接收端文件大小,那样更容易接收
    比如
    WinsockB.SendData "len:" + cstr(FileLength)
    winsockb.senddata "content:" + 内容块这么做,你接收端也不用写的这么累了。
      

  2.   

    感谢热心解答,是这样的,因为截到的图片是固定的230454字节大小,于是就把大小判断省了。现在已经可以接收图片并显示了但是225K的图片没压缩的话在VB上这样发送:LabelB.Caption = "ÕýÔÚ·¢ËÍ"
    '½Øͼ
    Dim x As StdPicture
       Set x = CapturePicture(Video_Handle)
       SavePicture x, "Video.bmp"
    '´ò¿ª
    Open "Video.bmp" For Binary As #1    DoEvents
        
        FileLength = LOF(1)
        
          If FileLength < 8092 Then
          
             ReDim SendVideo(1 To FileLength)
             Get #1, , SendVideo
             WinsockB.SendData SendVideo
             
          Else
          
             While FileLength > 8092
             
               ReDim SendVideo(1 To 8092)
               Get #1, , SendVideo
               WinsockB.SendData SendVideo
               FileLength = FileLength - 8092
               
             Wend
             
             ReDim SendVideo(1 To FileLength)
             Get #1, , SendVideo
             WinsockB.SendData SendVideo
             
          End If
      
      
    Close #1大约3秒才发送一张也太慢了。。
    还有,如果发送完一张立马发送下一张,移动端程序还是会挂掉这样一来,大约10秒才发一张图片才能保障程序正常运行,本来想进行视频监控呢这哪还叫视频监控怎么才能提高发送速度而程序又不会挂掉呢?
      

  3.   

    While FileLength > 8092
             
               ReDim SendVideo(1 To 8092)
               Get #1, , SendVideo   //这里应该Get #1,FileLength+1 , SendVideo  ,要不重复发送第一段
               WinsockB.SendData SendVideo
               FileLength = FileLength - 8092
               
             Wend
             //为什么这下面还发送一次图片,上面循环发了一次,这下面又发了一次。
             ReDim SendVideo(1 To FileLength)
             Get #1, , SendVideo
             WinsockB.SendData SendVideo
    你测测网络速度多快
      

  4.   

    我下了一个PC是服务端的程序,这个程序  也是一张张图片发送,PC端用的MFC,源代码没有,图片质量跟我采集的比一点不差,但是速度却很快,每秒大约两张。
      

  5.   

    这没办法,VB WinSock速度慢没有好方法,除了用多线程能够改善些外。你这图片传送不复杂,建议用最底层的Sock API传送吧。截图和传送不一定要一个程序内,可以通过图片目录监控即可。
      

  6.   

    有没有办法将截的图直接保存到数组?不用保存成图片。。
    非常感谢,VB很久不搞了,基础也不好,socket API  VB 老是参数不对。。打算改用VC调用SOCKET  API发送
      

  7.   

    可以的,翻了翻,把以前收藏的翻了出来,参见下面,阅读阅读吧
    http://blog.csdn.net/Modest/article/details/4505237
      

  8.   

    用Service下载数据,但是不要用Bmp图片做实验