文件传输
在局域网里需要多台计算机将文件传输给一台server,有可能文件会很大,应该使用何种方式。
详细,最好有代码!
问题点数:30、回复次数:8Top
1 楼viena(维也纳N02)回复于 2005-02-24 11:09:34 得分 0
用Winsock控件吧Top
2 楼xayzmb(行者)回复于 2005-02-24 11:51:14 得分 25
用winsock控件,基于TCP/IP进行文件传送
Private Sub cmdSend_Click()
'向服务器发送文件
Dim myFile() As Byte
Dim lngFile As Long '文件长度
Dim FileName As String '文件名称
Static i As Single
sockClient.Close
sockClient.Connect
Do
DoEvents
If sockClient.State = sckConnected Then
Exit Do
Else
i = i + 1
If i > 200000 Then
Dim box As String
box = MsgBox("是否放弃?", vbYesNo, "连接失败:")
If box = vbYes Then
i = 0
Exit Do
Else
i = 0
End If
End If
End If
DoEvents
Loop
lenth = 0
'检查是否与服务器连接
If sockClient.State = sckConnected Then
FileName = VB.App.Path & "\1.jpg" '取得文件名及路径
lngFile = FileLen(FileName) '取得文件长度
ReDim myFile(lngFile - 1) As Byte '初始化数组
Open FileName For Binary As #1 '打开文件
Get #1, , myFile '将文件写入数组
Close #1 '关闭文件
sockClient.SendData myFile '发送
Else
MsgBox "没有连接"
End If
End Sub
Private Sub sockServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)
'接收文件
Static i As Long
Dim myFile() As Byte
Dim myLong As Double
Dim myPath As String
myPath = VB.App.Path & "\a.doc"
cmdC.Caption = "正在接收数据... " & bytesTotal
ReDim myFile(0 To bytesTotal - 1) '此处也可以是(0 To bytesTotal-1)
sockServer(Index).GetData myFile
i = i + 1
Open myPath For Binary As #1 '新建文件
Put #1, lenth + 1, myFile '将收到的数据写入新文件中
Close #1 '关闭
'记录文件长度
lenth = lenth + UBound(myFile) - LBound(myFile) + 1
End Sub
Top
3 楼xayzmb(行者)回复于 2005-02-24 11:52:27 得分 0
myPath = VB.App.Path & "\a.doc"
这一句改成:
myPath = VB.App.Path & "\a.jpg"
要示然文件格式不对Top
4 楼tiaoci(我挑刺,我快乐)回复于 2005-02-24 11:57:11 得分 0
copy c:\data.dat \\server\shared\data.datTop
5 楼tiaoci(我挑刺,我快乐)回复于 2005-02-24 11:57:47 得分 0
局域网么,吃多了写socketTop
6 楼santafrancesco()回复于 2005-03-01 20:09:22 得分 3
好像socket传输文件大小不能超过8k,不然的话后面的8k会把前面的8k覆盖掉,不知道上面的程序又没有这样的问题。Top
7 楼xiaohuangtao(绿毛网虫)回复于 2005-03-03 13:04:25 得分 0
http://www.smartmaildemo.com有代码Top
8 楼susususu()回复于 2005-03-17 13:57:49 得分 2
upTop




