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:" + 内容块这么做,你接收端也不用写的这么累了。
感谢热心解答,是这样的,因为截到的图片是固定的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秒才发一张图片才能保障程序正常运行,本来想进行视频监控呢这哪还叫视频监控怎么才能提高发送速度而程序又不会挂掉呢?
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 你测测网络速度多快
ReDim SendVideo(FileLength)时应该改为ReDim SendVideo(1 to FileLength) 要不长度多了一位,
另外,大文件连续发送,
Open "Video.bmp" For Binary As #1
下面加上doevents这种大文件,最好分成小块发送。第一次发送时告诉接收端文件大小,那样更容易接收
比如
WinsockB.SendData "len:" + cstr(FileLength)
winsockb.senddata "content:" + 内容块这么做,你接收端也不用写的这么累了。
'½Øͼ
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秒才发一张图片才能保障程序正常运行,本来想进行视频监控呢这哪还叫视频监控怎么才能提高发送速度而程序又不会挂掉呢?
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
你测测网络速度多快
非常感谢,VB很久不搞了,基础也不好,socket API VB 老是参数不对。。打算改用VC调用SOCKET API发送
http://blog.csdn.net/Modest/article/details/4505237