我是一个VB新手
现用winsock控件编写一个传输图片的客户端
图片大小在50K-100之间
转成BABY格式后发送
自己做了个服务器端,结果报文报太大,无法传送
现在想到用文件分段来实现传送,但是接收端需要更改
由于服务端是远程的,再我不改变远程服务端的情况下,能不能一次把图片都发过去
有什么方法能一次性发送大文件,100K左右对方接收方法未知,只给我一个端口,一个协议,按照这个协议传送
现用winsock控件编写一个传输图片的客户端
图片大小在50K-100之间
转成BABY格式后发送
自己做了个服务器端,结果报文报太大,无法传送
现在想到用文件分段来实现传送,但是接收端需要更改
由于服务端是远程的,再我不改变远程服务端的情况下,能不能一次把图片都发过去
有什么方法能一次性发送大文件,100K左右对方接收方法未知,只给我一个端口,一个协议,按照这个协议传送
***********************************************************************
'发送端
Sub SendFile(FileName As String, Wnk As Winsock)
'FileName 预发送的文件.
Static iPoss As Double '当前发送位置
Dim SendData() As Byte '二进制数据
Dim Length As Double '记录文件长度
Dim FileNum As Integer
FileNum = FreeFile '获得文件号
Length = FileLen(FileName) '获得文件长度
Open FileName For Binary As FileNum
DoEvents
If Length <= Max Then
ReDim SendData(1 To Length)
Get FileNum, , SendData
Wnk.SendData SendData
Else
While iPos <= Length - Max
ReDim SendData(1 To Max)
Get FileNum, iPos + 1, SendData
Wnk.SendData SendData
iPos = iPos + Max
Wend
End If
ReDim SendData(Length - iPos - 1) '此处注意要-1,否则不会成功!
Get FileNum, iPos + 1, SendData
Wnk.SendData SendData
Close FileNum
Debug.Print FileLen(FileName)
End Sub
*******************************************************************
'接收端
Private Sub udpPeerB_DataArrival(ByVal bytesTotal As Long)
ReceiveData "d:\x.jpg", udpPeerB, bytesTotal
End Sub
Sub ReceiveData(FileName As String, Wnk As Winsock, Lens As Long) '接收数据
'FileName 文件保存的位置
Dim RecData() As Byte
Dim Length As Double
Dim FileNum As Integer
FileNum = FreeFile
Open FileName For Binary As FileNum
Length = FileLen(FileName)
ReDim RecData(1 To Lens)
Wnk.GetData RecData
Put FileNum, Length + 1, RecData
Close FileNum
End Sub
*******************************************************************
这段程序出了点问题
只能传送大概5分之一的内容
接收那块只能收到8192 之后就不接收了
问题出在哪?