我在设计一个需要探测端口功能的工具,请问怎么探测端口是否开??我想应该是用winsock,不过具体怎么做???请教了,谢谢!!!

解决方案 »

  1.   

    连接一下,或者listen同样端口不就知道了?
      

  2.   

    on error resume on_error
    winsock1.localport=1212
    winsock1.listen
    on_error:
    msgbox ("the port has been opened", ,"prompt")
      

  3.   

    可以使用扫描,直接指定tcp7000
    text1,ip地址
    text2,起始端口
    text3,终止端口
    text4,信息
    command1,扫描
    command2,停止
    添加winsock控件,
    代码
    Option Explicit
    Dim PortNo As LongPrivate Sub Command1_Click()
        PortNo = CLng(Text2.Text)
        Text4.Text = ""
        Command2.Enabled = True
        Command1.Enabled = False
        Winsock1.Connect Text1.Text, PortNo
        Me.Caption = "连接端口扫描编号:" & PortNo
    End SubPrivate Sub Command2_Click()
        Command1.Enabled = True
        Command2.Enabled = False
        Winsock1.Close
        PortNo = CLng(Text2.Text)
    End SubPrivate Sub Form_Load()
        Text1.Text = "127.0.0.1"
        Text2.Text = "1"
        Text3.Text = "32767"
        Label1.Caption = "IP 地址"
        Label2.Caption = "起始连接端口"
        Label3.Caption = "终止连接端口"
        Command1.Caption = "开始扫描"
        Command2.Caption = "停止"End Sub
    Private Sub Winsock1_Connect()
        Text4.Text = Text4.Text & "连接端口编号:" & Str(Winsock1.RemotePort) & vbCrLf
        Winsock1.Close
        PortNo = PortNo + 1
        If PortNo <= CLng(Text3.Text) Then
            Me.Caption = "连接端口扫描编号:" & PortNo
            Winsock1.Connect Text1.Text, PortNo
        Else
            Command2_Click
        End If
    End SubPrivate Sub Winsock1_Error(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)    Winsock1.Close
        PortNo = PortNo + 1
        If PortNo <= CLng(Text3.Text) Then
            Me.Caption = "连接端口扫描" & PortNo
            Winsock1.Connect Text1.Text, PortNo
        Else
            Command2_Click
        End If
    End Sub
      

  4.   

    你可以用GETtickcount函数啊!或用TIMER控件!控制超时时间!
    你试试:
    winsock1:index=0
    form_load()
    for i= 1 to 100
    winsock1(i).load
    next
    end
    cmd_click()
    dim i as integer
    i=0
    again:
    s=i+100
    for i=i to s
    if val(text1.text)+i>text2.text then 
    exit for
    end if
    winsock1(I).localport=val(text1.text)+i
    next
    if i< val(text2.text) then
    goto again:
    end if
    end sub
      

  5.   

    用我这种方法吧,挺快的
    Private Sub Command1_Click()
        Dim i As Integer
        List1.Clear
        For i = Val(Text2) To Val(Text3)
            Me.Caption = i
            Winsock1.Close
            Winsock1.Connect Text1, i
            Sleep (1)
            DoEvents
            If Winsock1(0).State = 7 Then
                List1.AddItem i
            End If
        Next i
    End Sub
      

  6.   

    for i=1 to 10
    load winsock(i)
    winsock(i).senddata reomete,port
    next
    可以实现
      

  7.   

    扫描本计算机可以使用error要是扫描远程计算机可以使用connect也有缺点:远程的断口占用时就看不出了
      

  8.   

    怎样做一个像在 命令提示行下 那样的程序
    我的意思是可以调用 系统提供的那些命令 ,如net,telnet等