📄 writing_control.html
字号:
<html>
<head>
<title>Writing DNS Control</title>
</head>
<body bgcolor="white">
<table border="0" cellpadding="0" cellspacing="0" width="980"><tr>
<td width="14%" valign="top">
<!--index-->
<img src="ostro_logo.gif" alt="OstroSoft Logo" width="170" border="0" hspace="0" vspace="0"><p>
<table border="5" cellpadding="0" cellspacing="0" bordercolor="silver" width="100%"><tr><td>
<table border="0" cellpadding="2" cellspacing="0" width="100%">
<tr><td>
<a href=http://www.ostrosoft.com/><font face="arial,helvetica,verdana" size="2"><b>Corporate</b></font></a>
</td></tr>
<tr><td>
<font face="arial,helvetica,verdana" size="2"><b>Products</b></font>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td> <a href=http://www.ostrosoft.com/ostronet.html><font face="arial,helvetica,verdana" size="2">Internet Tools</font></a></td></tr>
<tr><td> <a href=http://www.ostrosoft.com/formoed.html><font face="arial,helvetica,verdana" size="2">FormoEd</font></a></td></tr>
<tr><td> <a href=http://www.ostrosoft.com/smtp.html><font face="arial,helvetica,verdana" size="2">SMTP control</font></a></td></tr>
<tr><td> <a href=DNS.html><font face="arial,helvetica,verdana" size="2">DNS control</font></a></td></tr>
<tr><td><table border="0" cellpadding="0" cellspacing="0"><tr><td> </td><td>
<font face="arial,helvetica,verdana" size="1"><a href="DNS.html">Main page</a></font><br>
<font face="arial,helvetica,verdana" size="1"><a href="writing_control.html">Writing DNS control</a></font><br>
<font face="arial,helvetica,verdana" size="1"><a href="using_vb.html">Using with VB</a></font><br>
<font face="arial,helvetica,verdana" size="1"><a href="using_asp.html">Using with MTS/COM+</a></font><br>
<font face="arial,helvetica,verdana" size="1"><a href="using_office.html">Using with VBScript</a></font><br>
<font face="arial,helvetica,verdana" size="1"><a href="FAQ.html">DNS FAQ</a></font><br>
</td></tr></table></td></tr>
<tr><td> <a href=http://www.ostrosoft.com/whois.html><font face="arial,helvetica,verdana" size="2">WhoIs control</font></a></td></tr>
<tr><td> <a href=http://www.ostrosoft.com/oswinsck.html><font face="arial,helvetica,verdana" size="2">oswinsck.dll</font></a></td></tr>
<tr><td> <a href=http://www.ostrosoft.com/backtrace.asp><font face="arial,helvetica,verdana" size="2">Backtrace</font></a></td></tr>
<tr><td> <a href=http://www.ostrosoft.com/buy.html><font face="arial,helvetica,verdana" size="2">Buy on-line</font></a></td></tr>
<tr><td> <a href=http://www.ostrosoft.com/download.html><font face="arial,helvetica,verdana" size="2">Download</font></a></td></tr>
</table>
</td></tr>
<tr><td>
<a href=http://www.ostrosoft.com/login.asp><font face="arial,helvetica,verdana" size="2"><b>Customer Support</b></font></a>
</td></tr>
<tr><td>
<a href=http://www.ostrosoft.com/vb><font face="arial,helvetica,verdana" size="2"><b>Editorial</b></font></a>
</td></tr>
</table>
</td></tr></table>
<!--end index-->
</td>
<td width="1%"> </td>
<td valign="top">
<!--content-->
<center><font face="arial,helvetica,verdana" size="5">Writing DNS Control</font><p>
<font face="arial,helvetica,verdana" size="2">
<b><a href="DNS.html">Main page</a>
<a href="writing_control.html">Writing DNS control</a>
<a href="using_vb.html">Using with VB</a>
<a href="using_asp.html">Using with MTS/COM+</a>
<a href="using_office.html">Using with VBScript</a>
<a href="FAQ.html">DNS FAQ</a></b></center><p>
<font color="#008040">Description: </font>OCX control, resolving host name to IP address and IP address to host name.<br>
<font color="#008040">Minimum requirements: </font>Visual Basic 4<br>
<font color="#008040">Download:</font> <a href="writing_control.zip">source code</a><br>
<font color="#008040">Project: </font>ActiveX Control<br>
<font color="#008040">Code:</font><br>
Const WSADescription_Len = 256<br>
Const WSASYS_Status_Len = 128<br>
Private Type HOSTENT<br>
hName As Long<br>
hAliases As Long<br>
hAddrType As Integer<br>
hLength As Integer<br>
hAddrList As Long<br>
End Type<br>
Private Type WSADATA<br>
wversion As Integer<br>
wHighVersion As Integer<br>
szDescription(0 To WSADescription_Len) As Byte<br>
szSystemStatus(0 To WSASYS_Status_Len) As Byte<br>
iMaxSockets As Integer<br>
iMaxUdpDg As Integer<br>
lpszVendorInfo As Long<br>
End Type<br>
<br>
Private Declare Function WSAStartup Lib "wsock32" _<br>
(ByVal VersionReq As Long, WSADataReturn As WSADATA) As Long<br>
Private Declare Function WSACleanup Lib "wsock32" () As Long<br>
Private Declare Function WSAGetLastError Lib "wsock32" () As Long<br>
Private Declare Function gethostbyaddr Lib "wsock32" (addr As Long, addrLen As
Long, _<br>
addrType As Long) As Long<br>
Private Declare Function gethostbyname Lib "wsock32" (ByVal hostname As String)
As Long<br>
Private Declare Sub RtlMoveMemory Lib "kernel32" (hpvDest As Any, ByVal
hpvSource As Long, _<br>
ByVal cbCopy As Long)<br>
<br>
Public Event Error(ByVal Number As Long, Description As String)<br>
Public Event ResolveCompleted()<br>
<br>
'checks if string is valid IP address<br>
Private Function IsIP(ByVal strIP As String) As Boolean<br>
On Error Resume Next<br>
Dim t As String: Dim s As String: Dim i As Integer<br>
s = strIP<br>
While InStr(s, ".") <> 0<br>
t = Left(s, InStr(s, ".") - 1)<br>
If IsNumeric(t) And Val(t) >= 0 And Val(t) <= 255 Then s = Mid(s,
InStr(s, ".") + 1) _<br>
Else Exit Function<br>
i = i + 1<br>
Wend<br>
t = s<br>
If IsNumeric(t) And InStr(t, ".") = 0 And Len(t) = Len(Trim(Str(Val(t))))
And _<br>
Val(t) >= 0 And Val(t) <= 255 And strIP <>
"255.255.255.255" And i = 3 Then IsIP = True<br>
If Err.Number > 0 Then<br>
RaiseEvent Error(Err.Number, Err.Description)<br>
Err.Clear<br>
End If<br>
End Function<br>
<br>
'converts IP address from string to sin_addr<br>
Private Function MakeIP(strIP As String) As Long<br>
On Error Resume Next<br>
Dim lIP As Long<br>
lIP = Left(strIP, InStr(strIP, ".") - 1)<br>
strIP = Mid(strIP, InStr(strIP, ".") + 1)<br>
lIP = lIP + Left(strIP, InStr(strIP, ".") - 1) * 256<br>
strIP = Mid(strIP, InStr(strIP, ".") + 1)<br>
lIP = lIP + Left(strIP, InStr(strIP, ".") - 1) * 256 * 256<br>
strIP = Mid(strIP, InStr(strIP, ".") + 1)<br>
If strIP < 128 Then<br>
lIP = lIP + strIP * 256 * 256 * 256<br>
Else<br>
lIP = lIP + (strIP - 256) * 256 * 256 * 256<br>
End If<br>
MakeIP = lIP<br>
If Err.Number > 0 Then<br>
RaiseEvent Error(Err.Number, Err.Description)<br>
Err.Clear<br>
End If<br>
End Function<br>
<br>
'resolves IP address to host name<br>
Private Function NameByAddr(strAddr As String) As String<br>
On Error Resume Next<br>
Dim nRet As Long<br>
Dim lIP As Long<br>
Dim strHost As String * 255: Dim strTemp As String<br>
Dim hst As HOSTENT<br>
<br>
If IsIP(strAddr) Then<br>
lIP = MakeIP(strAddr)<br>
nRet = gethostbyaddr(lIP, 4, 2)<br>
If nRet <> 0 Then<br>
RtlMoveMemory hst, nRet, Len(hst)<br>
RtlMoveMemory ByVal strHost, hst.hName, 255<br>
strTemp = strHost<br>
If InStr(strTemp, Chr(10)) <> 0 Then strTemp =
Left(strTemp, InStr(strTemp, Chr(0)) - 1)<br>
strTemp = Trim(strTemp)<br>
NameByAddr = strTemp<br>
Else<br>
RaiseEvent Error(9003, "Host name not found")<br>
Exit Function<br>
End If<br>
Else<br>
RaiseEvent Error(9002, "Invalid IP address")<br>
Exit Function<br>
End If<br>
If Err.Number > 0 Then<br>
RaiseEvent Error(Err.Number, Err.Description)<br>
Err.Clear<br>
End If<br>
End Function<br>
<br>
'resolves host name to IP address<br>
Private Function AddrByName(ByVal strHost As String)<br>
On Error Resume Next<br>
Dim hostent_addr As Long<br>
Dim hst As HOSTENT<br>
Dim hostip_addr As Long<br>
Dim temp_ip_address() As Byte<br>
Dim i As Integer<br>
Dim ip_address As String<br>
If IsIP(strHost) Then<br>
AddrByName = strHost<br>
Exit Function<br>
End If<br>
hostent_addr = gethostbyname(strHost)<br>
If hostent_addr = 0 Then<br>
RaiseEvent Error(9001, "Can't resolve hst")<br>
Exit Function<br>
End If<br>
RtlMoveMemory hst, hostent_addr, LenB(hst)<br>
RtlMoveMemory hostip_addr, hst.hAddrList, 4<br>
ReDim temp_ip_address(1 To hst.hLength)<br>
RtlMoveMemory temp_ip_address(1), hostip_addr, hst.hLength<br>
For i = 1 To hst.hLength<br>
ip_address = ip_address & temp_ip_address(i) & "."<br>
Next<br>
ip_address = Mid(ip_address, 1, Len(ip_address) - 1)<br>
AddrByName = ip_address<br>
If Err.Number > 0 Then<br>
RaiseEvent Error(Err.Number, Err.Description)<br>
Err.Clear<br>
End If<br>
End Function<br>
<br>
Public Function AddressToName(strIP As String)<br>
AddressToName = NameByAddr(strIP)<br>
RaiseEvent ResolveCompleted<br>
End Function<br>
<br>
Public Function NameToAddress(strName As String)<br>
NameToAddress = AddrByName(strName)<br>
RaiseEvent ResolveCompleted<br>
End Function<br>
<br>
Private Sub UserControl_Initialize()<br>
Dim udtWSAData As WSADATA<br>
If WSAStartup(257, udtWSAData) Then RaiseEvent Error(Err.LastDllError,
Err.Description)<br>
End Sub<br>
<br>
Private Sub UserControl_Terminate()<br>
WSACleanup<br>
End Sub
</font>
<!--end content-->
</td>
</tr>
<tr><td></td><td valign="top" colspan="2" align="center"><br><font face="arial, geneva" size="1">
<script language="javascript">
function showPrivacy() {
winHelp = window.open('http://www.ostrosoft.com/privacy.html', null, 'left=100,top=100,height=260,width=400,status=no,toolbar=no,menubar=no,location=no,resizable=yes,scrollbars=yes');
}
</script>
<b>Copyright © 1996-2001 OstroSoft. All rights reserved.</b> <a href=mailto:info@ostrosoft.com><i><b>info@ostrosoft.com</b></i></a><br><a href="javascript:showPrivacy();" onmouseover="window.status='Privacy statement'; return true" onmouseout="window.status=''; return true">Privacy statement</a></font></td></tr>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -