以下是以前别人的代码,但试验后发现不管用,即使没有被占用的端口都报被占用了:    Private Type IN_ADDR
        S_addr As Long
    End Type    Private Type SOCK_ADDR
        sin_family As Integer
        sin_port As Integer
        sin_addr As IN_ADDR
        sin_zero(0 To 7) As Byte
    End Type
    
Private Declare Function bind Lib "wsock32" (ByVal sock As Long, addr As SOCK_ADDR, ByVal namelen As Long) As LongConst SOCKET_ERROR = -1
Private Sub Form_Load()
Dim CR As Long
Dim LocalServer As SOCK_ADDRLocalServer.sin_family = AF_INET
LocalServer.sin_port = 4001
LocalServer.sin_addr.S_addr = INADDR_ANYCR = bind(sock, LocalServer, Len(LocalServer))
If CR = SOCKET_ERROR Then
    MsgBox "port was used"
End IfEnd Sub

解决方案 »

  1.   

    [email protected]谢谢请尽快发来
      

  2.   

    [email protected]
    谢谢,楼主给我也发一个
      

  3.   

    [email protected]
    谢谢,楼主给我也发一个
      

  4.   

    没有用就是用的 winsock 控件的listen这个我早就试过了,会有问题。下面是我的代码,我不知道为什么老是报错,帮忙看看:
    Private Sub Form_Load()
        LPort = 1025
    On Error Resume Next
    RE:
        NewWSCK.LocalPort = LPort
        NewWSCK.Listen
      
        If Err.Number <> 0 Then
            MsgBox "被占用!  " + Err.Description
            LPort = LPort + 1
            NewWSCK.Close
            GoTo RE
        Else
            NewWSCK.Close
        End If
      
    .....这样  LPort+1 后 NewWSCK.Listen 就会报错,为什么??
      

  5.   

    楼上的wxy_xiaoyu(然也) ,你只要编译成EXE后,运行即可捕捉错误,利用错误来判断断口是否被占用。