这个是别人写的一个局域网内winsock小软件部分代码,
我截出来了,侦听并连接部分客户端后会出现如题所述错误,错误号10035.
帮着看了半天(没想到好方法避免问题),网上说这个错误是客户端连接太快?堵塞了.出现错误不要紧,那么如何跳过这个错误,让它继续连接其他客户端?
主要是出现错误后,它卡在那里好一会.(当然,已经连上的是可以在网内发送消息的)
Private Sub tcpServer_ConnectionRequest(Index As Integer, ByVal requestID As Long)
    On Error GoTo Err1
    Dim i As Integer
    '找一个可用的已加载SOCK重用,0已用来侦听
    For i = 1 To tcpServer.UBound
        If tcpServer(i).State = sckClosed Then Exit For
    Next
    '无可重用的就新加载一个
    If i > tcpServer.UBound Then
        Load tcpServer(i)
    End If    
    '接受连接申请
    tcpServer(i).Accept requestID    
    '……    
    Exit Sub
Err1:    
End SubPrivate Sub tcpServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)
    Dim clientDat As String
    Dim i As Integer
    
    tcpServer(Index).GetData clientDat
    If Len(clientDat) <= 0 Then Exit Sub
    If Len(clientDat) = bytesTotal Then
        Sleep (100)
    End If
    '……
end subPrivate Sub tcpServer_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)   
    If tcpServer(Index).State <> sckClosed Then        tcpServer(Index).Close    
End Sub

解决方案 »

  1.   

    哈哈,这个…… 或许某人写的都成范例了.
    我一般用两个不同的名称tcpListen,tcpServer()
      

  2.   

    嗯。
    代码看上去没有任何问题,你不妨考虑直接使用API实现。具体可参考《用WINSOCK API实现同步非阻塞方式的网络通讯
      

  3.   

    你那代码看起来不错啊,不过我似乎找到原因了,winsock的那些API得看得比较娴熟了才好用.
    主要是我不好调试现在的那个程序(它在别的电脑上作为消息服务器用的),
    我改了一点点东西,然后替换掉了那个程序
    提到的问题"如何跳过这个错误,让它继续连接其他客户端?" ,我做一点点处理就是让侦听用的winsock重新侦听.哈哈,开始还没怀疑到这个,尽管不是很确定,但现在确实好用了.