Dim i As Integer
1   Dim name As String
2   If Dir(Text1.Text) = "" Or Text1.Text = "" Then
3       MsgBox "没有可以传送的文件~", vbCritical, "Server"
4      Else
5    For i = 1 To 200        '最多只能接受200个客户端连接
6       If wArr(i, 0) <> "" Then   '向所有跟本服务端连接的客户端发送文件
7      
8        wskServer(i).SendData "SendFile," & Dir(Text1.Text) & "," & FileLen(Text1.Text)
9        
10        DoEvents
11        
12       End If
13    Next i
14    End If错误:不能发送文件.如果把第8行代码的wskserver(i)改为wskserver(0),就可以发送文件,请问wskserver(0)是向所有跟本服务端连接的客户端发送文件吗?如果不是,那该怎么改才可以向所有的客户端发送文件?

解决方案 »

  1.   

    Dim i As Integer
    1   Dim name As String
    2   If Dir(Text1.Text) = "" Or Text1.Text = "" Then
    3       MsgBox "没有可以传送的文件~", vbCritical, "Server"
    4      Else
    5    For i = 1 To 200        '最多只能接受200个客户端连接
    6       If wArr(i, 0) <> "" Then   '向所有跟本服务端连接的客户端发送文件
    7      if wskServer(i).state=7 then'这里+判断连接是不是有效
    8        wskServer(i).SendData "SendFile," & Dir(Text1.Text) & "," & FileLen(Text1.Text)
    9        
    10        DoEvents
    11      end if
    12       End If
    13    Next i
    14    End If错误:不能发送文件.
      

  2.   

    Private Sub TCPSendFile(objWinSock As Winsock, FileNumber As Integer, SendLen As Long)
        
        Dim FileByte() As Byte, i As Long
        
        ReDim FileByte(SendLen - 1) '按照需传送的大小分配数组
        Get #FileNumber, , FileByte
        
        objWinSock.SendData FileByte  ========这句出错"实时错误40006
        
    End Sub
      

  3.   

    oh my god!这错误代表winsock还没连接上...群发的话,建议用UDP来广播...
    TCP可以,不过需换种方法...暂叫"按需分配"吧!呵呵
      

  4.   

    向楼上的请教,如何“用UDP来广播”?
      

  5.   

    TO:VBDN(王水云)就是把文件分片,一分一分的广播到网内啰!当然,其中还有很多较验之类的手段要做的!