任何一个国际域名的信息都记录在DNS(域名服务器)上,如何查询关于某个域名的注册信息呢?象POP3是用于接收电子邮件一样,Whois服务是用于查询域名信息的。在美国这个服务由InterNIC提供。当你想确定一个域名是否存在,或者想获得该域名注册信息时,这个服务很有用。
一、Winsock控件能够提供执行Whois查找所需要的所有信息。步骤如下:
1.连接到InterNIC服务器的端口43。
2.发送域名。
3.读取来自服务器的答复。
4.从服务器上断开连接。
二、设计界面以及源程序:
源程序包括以上窗体和一个模块文件,模块中的代码用来判断计算机是否连网。
1、模块中的代码:
Public Declare Function RasEnumConnections Lib "RasApi32.dll" Alias "RasEnumConnectionsA" (lpRasCon As Any, lpcb As Long, lpcConnections As Long) As Long
Public Declare Function RasGetConnectStatus Lib "RasApi32.dll" Alias "RasGetConnectStatusA" (ByVal hRasCon As Long, lpStatus As Any) As Long
Public Const RAS95_MaxEntryName = 256
Public Const RAS95_MaxDeviceType = 16
Public Const RAS95_MaxDeviceName = 32 '
Public Type RASCONN95
dwSize As Long
hRasCon As Long
szEntryName(RAS95_MaxEntryName) As Byte
szDeviceType(RAS95_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type
Public Type RASCONNSTATUS95
dwSize As Long
RasConnState As Long
dwError As Long
szDeviceType(RAS95_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type
'自定义函数,判断是否连接到Internet
Public Function IsConnected() As Boolean
Dim TRasCon(255) As RASCONN95
Dim lg As Long
Dim lpcon As Long
Dim RetVal As Long
Dim Tstatus As RASCONNSTATUS95
TRasCon(0).dwSize = 412
lg = 256 * TRasCon(0).dwSize
RetVal = RasEnumConnections(TRasCon(0), lg, lpcon)
If RetVal <> 0 Then
Exit Function
End If
Tstatus.dwSize = 160
RetVal = RasGetConnectStatus(TRasCon(0).hRasCon, Tstatus)
If Tstatus.RasConnState = &H2000 Then
IsConnected = True
Else
IsConnected = False
End If
End Function
2、窗体中的代码:
Private Sub Form_Load()
'可供选择的WhoIs服务器
With WhoIs_Server
'第一条是查询国内域名的,其余可查询国际域名
.AddItem " whois.cnnic.net.cn "
.AddItem " whois.opensrs.net "
.AddItem " whois.networksolutions.com "
.AddItem " whois.nic.gov "
.AddItem " rs.internic.net "
.AddItem " whois.ripe.net "
.AddItem " whois.arin.net "
.AddItem " whois.apnic.net "
.AddItem " whois.aunic.net "
.ListIndex = 0
End With
End Sub
Private Sub Send_Query_Button1_Click()
Dim Selected_WhoIs_Server As String
If IsConnected() = False Then
MsgBox "没有连接到Internet.", 64, "提示"
Else
Input_Label.Caption = ""
WhoIs_Response = ""
'初始化Winsock
Winsock.Close
Winsock.LocalPort = 0
Selected_WhoIs_Server = Trim(WhoIs_Server.Text)
'连接到WHOIS服务器数据库,端口号43
Winsock.Connect Selected_WhoIs_Server, 43
End If
End Sub
Private Sub Winsock_Connect()
'连接WinSock并发送域名查询请求
If Trim(Domain_Name) = "" Then
WhoIs_Response = " No domain name was entered."
Beep
Exit Sub
End If
Winsock.SendData Trim(Domain_Name) & vbCrLf
End Sub
Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)
'处理接收的Winsock数据流
Dim WhoIs_Data As String
On Error GoTo ERROR_HANDLER
Winsock.GetData WhoIs_Data
Input_Label.Caption = Input_Label.Caption & WhoIs_Data
WhoIs_Response = Input_Label.Caption
Exit Sub
'错误处理
ERROR_HANDLER:
WhoIs_Response = Error
End Sub
三、本程序提供的功能既能查询国际域名,也能查询国内域名。如查询搜狐的结果如下所示。程序在Win98,VB6.0下运行通过。
[摘自计算机世界
]
帮帮忙,帮我把VB的代码改成C#.
最新推荐文章于 2022-07-12 10:13:26 发布