用VB如何简单探测一个端口是否开放?比如探测139端口开否!

小泽zz 2004-04-28 12:31:32
我在设计一个需要探测端口功能的工具,请问怎么探测端口是否开??

我想应该是用winsock,不过具体怎么做???

请教了,谢谢!!!
...全文
376 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
monica8361 2004-05-06
  • 打赏
  • 举报
回复
多线程是唯一可行的办法
defyer007 2004-05-05
  • 打赏
  • 举报
回复
怎样做一个像在 命令提示行下 那样的程序
我的意思是可以调用 系统提供的那些命令 ,如net,telnet等
antshome 2004-05-05
  • 打赏
  • 举报
回复
楼上的,VB不可以写控制台程序
sekingsboy 2004-05-04
  • 打赏
  • 举报
回复
for i=1 to 10
load winsock(i)
winsock(i).senddata reomete,port
next
可以实现
kmzs 2004-05-04
  • 打赏
  • 举报
回复
好像没有更好的方法了
eyeonme 2004-05-04
  • 打赏
  • 举报
回复
扫描本计算机可以使用error

要是扫描远程计算机可以使用connect

也有缺点:

远程的断口占用时就看不出了
mingtian2008 2004-05-04
  • 打赏
  • 举报
回复
up
starrain95 2004-05-02
  • 打赏
  • 举报
回复
用我这种方法吧,挺快的
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
vbfunner 2004-05-01
  • 打赏
  • 举报
回复
你可以用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
小泽zz 2004-04-28
  • 打赏
  • 举报
回复
帮忙一下,在线等待!!!!!

急啊!!!!!!!!
小泽zz 2004-04-28
  • 打赏
  • 举报
回复
谢谢!!!

已经可以实现扫描端口是否开放了~~~~

但是又有一个问题了!!那就是这样扫描端口的速度太慢,大概1秒钟扫一个端口

能否多线程??有很多安全工具说多线程实现扫描的,这种多线程应该怎么实现???


请教了!!
online 2004-04-28
  • 打赏
  • 举报
回复
可以使用扫描,直接指定tcp7000
text1,ip地址
text2,起始端口
text3,终止端口
text4,信息
command1,扫描
command2,停止
添加winsock控件,
代码
Option Explicit
Dim PortNo As Long

Private Sub Command1_Click()
PortNo = CLng(Text2.Text)
Text4.Text = ""
Command2.Enabled = True
Command1.Enabled = False
Winsock1.Connect Text1.Text, PortNo
Me.Caption = "连接端口扫描编号:" & PortNo
End Sub

Private Sub Command2_Click()
Command1.Enabled = True
Command2.Enabled = False
Winsock1.Close
PortNo = CLng(Text2.Text)
End Sub

Private 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 Sub

Private 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


vbfunner 2004-04-28
  • 打赏
  • 举报
回复
是goto哈不好意思
vbfunner 2004-04-28
  • 打赏
  • 举报
回复
on error resume on_error
winsock1.localport=1212
winsock1.listen
on_error:
msgbox ("the port has been opened", ,"prompt")
flyingZFX 2004-04-28
  • 打赏
  • 举报
回复
up
yingle2000 2004-04-28
  • 打赏
  • 举报
回复
连接一下,或者listen同样端口不就知道了?

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧