用winsock控件通讯,服务端也在同一台机器上监听9000端口,多次建立连接之后发现每次连接都通过一个不同的客户端端口去连接9000,并且已经关闭的连接端口状态是TIMED_WAIT,请问如何释放这些端口

解决方案 »

  1.   

    楼上说的对,过一段时间系统会自动回收。但是我的问题是,我需要连续不停的多次连接并且关闭,在2000系统下这样操作几次后就会出现10022 soket not bound 的错误,请问,怎么解决呢。
      

  2.   

    winsock1(index).close
    ●●●●●我是新手,我要提高,把分给我,谢谢!◆◆◆◆◆◆◆◆
    ●你好,我好大家好!希望我能成为你某方面的专家!谢谢支持!●
    ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
    connectioncounts = connectioncounts + 1
    Dim i As Integer
    Dim findclosedwinsock As Boolean
    Dim newwinsockid As Integer
    If Index <> 0 Then Exit Sub
    ts 90, "index=" & Index & ",requestid=" & requestID '
    'MsgBox SockNum
    For i = 1 To SockNum
    '检查已经加载的winscok是否有未连接的
       If winsockstate(Winsock1(i)) = sckClosed Or winsockstate(Winsock1(i)) = -100 Then
    '   MsgBox i
          If findclosedwinsock = False Then
           newwinsockid = i
           findclosedwinsock = True
          End If
        If winsockstate(Winsock1(i)) <> -100 Then
        Unload Winsock1(i)
        End If
        End If
    Next i
    If newwinsockid = 0 Then
    '连接的客户数大于socket个数,加载socket
        SockNum = SockNum + 1
        newwinsockid = SockNum
    End If
    winsockhistory_id = winsockhistory_id + 1
    Load Winsock1(newwinsockid)
    'MsgBox newwinsockid
    'On Error Resume Next
    'MsgBox ClientInfo(newwinsockid).rtf8url
    'MsgBox winsocksendok(newwinsockid) = True
    'MsgBox Winsock1(newwinsockid).State
    Winsock1(newwinsockid).Accept requestID