老是客户端连接出错为什么啊!
'服务器代码
Public CurNumber As Integer
Public MaxNumber As IntegerPrivate Sub Form_Load()
CurNumber = 0
MaxNumber = 10
'[sckListen]控件侦听网络
sckListen.LocalPort = 8888
sckListen.ListenMsgBox sckListen.State
End Sub
Private Sub sckListen_ConnectionRequest(ByVal requestID As Long)
MsgBox "fff"
sckServer.Accept requestID '应答连接请求
MsgBox requestID
Dim i As Long
If CurNumber < MaxNumber Then 'MaxNumber为最大连接数,CurNumber为当前连接数
For i = 1 To CurNumber
If sckServer(i).State = 0 Then '判断是否有空闲Winsock控件
Exit For
End If
Next i
If i = CurNumber Then
CurNumber = CurNumber + 1
i = CurNumber
End If
Load sckServer(i) '动态加载Winsock控件
sckServer(i).Accept requestID
Exit Sub
End If
sckBusy.Close
sckBusy.Accept requestIDEnd SubPrivate Sub sckServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)Dim RecStr As String
sckServer(Index).GetData RecStr
Print RecStrEnd Sub
'客户端代码Private Sub Command2_Click()
Dim SendStr As String
SendStr = "连接成功!" & Text2.Text
Winsock1.SendData SendStr '传送数据                  
(总上面是这句出错,不知道为什么原因)服务器以监听了可为什么还是不行啊?End SubPrivate Sub Form_Load()Winsock1.Protocol = sckTCPProtocol '设置协议为TCP方式'IP地址"127.0.0.1"代表本机,与本机的实际地址无关
Winsock1.RemoteHost = Text1.Text'设置远程主机接口号,该值必须与设置远程主机服务器程序的接口号一致
Winsock1.RemotePort = 8888
If Winsock1.State = 0 Then
Winsock1.Connect '申请连接
MsgBox Winsock1.State
End If
End Sub

解决方案 »

  1.   

    一个请求怎么能应答两次!
    sckServer.Accept requestID '应答连接请求
    sckServer(i).Accept requestID 
      

  2.   

    我删了可还是连接错误为啥啊?服务器
    Option Explicit
    Public CurNumber As Integer
    Public MaxNumber As IntegerPrivate Sub Form_Load()
    CurNumber = 0
    MaxNumber = 10
    '[sckListen]控件侦听网络
    sckListen.LocalPort = 8888
    sckListen.ListenMsgBox sckListen.State
    End Sub
    Private Sub sckListen_ConnectionRequest(ByVal requestID As Long)Dim i As Long
    If CurNumber < MaxNumber Then 'MaxNumber为最大连接数,CurNumber为当前连接数
    For i = 1 To CurNumber
    If sckServer(i).State = 0 Then '判断是否有空闲Winsock控件
    Exit For
    End If
    Next i
    If i = CurNumber Then
    CurNumber = CurNumber + 1
    i = CurNumber
    End If
    Load sckServer(i) '动态加载Winsock控件
    sckServer(i).Accept requestID
    Exit Sub
    End If
    sckBusy.Close
    sckBusy.Accept requestIDEnd SubPrivate Sub sckServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)Dim RecStr As String
    sckServer(Index).GetData RecStr
    Print RecStrEnd Sub客记端
    Option ExplicitPrivate Sub Command1_Click()
    MsgBox Winsock1.State
    End SubPrivate Sub Command2_Click()
    Dim SendStr As String
    SendStr = "连接成功!" & Text2.Text
    Winsock1.SendData SendStr '传送数据
    End SubPrivate Sub Form_Load()Winsock1.Protocol = sckTCPProtocol '设置协议为TCP方式'IP地址"127.0.0.1"代表本机,与本机的实际地址无关
    Winsock1.RemoteHost = Text1.Text'设置远程主机接口号,该值必须与设置远程主机服务器程序的接口号一致
    Winsock1.RemotePort = 8888
    If Winsock1.State = 0 Then
    Winsock1.Connect '申请连接
    MsgBox Winsock1.State
    End If
    End Sub
      

  3.   

    For i = 1 To CurNumber
    Next i
    '全部循环结束后 i > CurNumber,下面的条件如何满足!
    '你至少调试一下,很容易发现两个客户请求的 i 是一样的!
    If i = CurNumber Then