根據計算機名獲得IP,和根據IP獲得主機名(轉)
Option Explicit
'// define constants
Private Const IP_SUCCESS As Long = 0
Private Const SOCKET_ERROR As Long = -1
Private Const MAX_WSADescription As Long = 256
Private Const MAX_WSASYSStatus As Long = 128
Private Const MIN_SOCKETS_REQD As Long = 1
Private Const WS_VERSION_REQD As Long = &H101
Private Const WS_VERSION_MAJOR As Long = WS_VERSION_REQD / &H100 And &HFF&
Private Const WS_VERSION_MINOR As Long = WS_VERSION_REQD And &HFF&
Private Const WSADescription_Len As Long = 256
Private Const WSASYS_Status_Len As Long = 128
Private Const AF_INET As Long = 2
'// structures
Private Type HOSTENT
hName As Long
hAliases As Long
hAddrType As Integer
hLength As Integer
hAddrList As Long
End Type
Private Type WSADATA
wVersion As Integer
wHighVersion As Integer
szDescription(0 To MAX_WSADescription) As Byte
szSystemStatus(0 To MAX_WSASYSStatus) As Byte
wMaxSockets As Long
wMaxUDPDG As Long
dwVendorInfo As Long
End Type
'// api
'kernel32
Private Declare Sub apiCopyMemory Lib "kernel32" Alias "RtlMoveMemory" (xDest As Any, xSource As Any, ByVal nBytes As Long)
Private Declare Function apiStrLen Lib "kernel32" Alias "lstrlenA" (lpString As Any) As Long
'wsock32
Private Declare Function apiGetHostByName Lib "wsock32.dll" Alias "gethostbyname" (ByVal hostname As String) As Long
Private Declare Function apiWSAStartup Lib "wsock32.dll" Alias "WSAStartup" (ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As Long
Private Declare Function apiWSACleanup Lib "wsock32.dll" Alias "WSACleanup" () As Long
Private Declare Function apiInetAddr Lib "wsock32.dll" Alias "inet_addr" (ByVal s As String) As Long
Private Declare Function apiGetHostByAddr Lib "wsock32.dll" Alias "gethostbyaddr" (haddr As Long, ByVal hnlen As Long, ByVal addrtype As Long) As Long
'// private functions
Private Function InitializeSocket() As Boolean
Dim WSAD As WSADATA
'attempt to initialize the socket
InitializeSocket = apiWSAStartup(WS_VERSION_REQD, WSAD) = IP_SUCCESS
End Function
Private Sub CloseSocket()
'try to close the socket
If apiWSACleanup() <> 0 Then
MsgBox "Error calling apiWSACleanup.", vbCritical
End If
End Sub
Public Function GetIPFromHostName(ByVal sHostName As String) As String
'converts a host name to an IP address.
Dim nBytes As Long
Dim ptrHosent As Long
Dim hstHost As HOSTENT
Dim ptrName As Long
Dim ptrAddress As Long
Dim ptrIPAddress As Long
Dim sAddress As String 'declare this as Dim sAddress(1) As String if you want 2 ip addresses returned
'try to initalize the socket
If InitializeSocket() = True Then
'try to get the IP
ptrHosent = apiGetHostByName(sHostName & vbNullChar)
If ptrHosent <> 0 Then
'get the IP address
apiCopyMemory hstHost, ByVal ptrHosent, LenB(hstHost)
apiCopyMemory ptrIPAddress, ByVal hstHost.hAddrList, 4
'fill buffer
sAddress = Space$(4)
'if you want multiple domains returned,
'fill all items in sAddress array with 4 spaces
apiCopyMemory ByVal sAddress, ByVal ptrIPAddress, hstHost.hLength
'change this to
'CopyMemory ByVal sAddress(0), ByVal ptrIPAddress, hstHost.hLength
'if you want an array of ip addresses returned
'(some domains have more than one ip address associated with it)
'get the IP address
GetIPFromHostName = IPToText(sAddress)
'if you are using multiple addresses, you need IPToText(sAddress(0)) & "," & IPToText(sAddress(1))
'etc
End If
Else
MsgBox "Failed to open Socket."
End If
End Function
Private Function IPToText(ByVal IPAddress As String) As String
'converts characters to numbers
IPToText = CStr(Asc(IPAddress)) & "." & _
CStr(Asc(Mid$(IPAddress, 2, 1))) & "." & _
CStr(Asc(Mid$(IPAddress, 3, 1))) & "." & _
CStr(Asc(Mid$(IPAddress, 4, 1)))
End Function
Public Function GetHostNameFromIP(ByVal sIPAddress As String) As String
Dim ptrHosent As Long
Dim hAddress As Long
Dim sHost As String
Dim nBytes As Long
'try to open the socket
If InitializeSocket() = True Then
'convert string address to long datatype
hAddress = apiInetAddr(sIPAddress)
'check if an error ocucred
If hAddress <> SOCKET_ERROR Then
'obtain a pointer to the HOSTENT structure
'that contains the name and address
'corresponding to the given network address.
ptrHosent = apiGetHostByAddr(hAddress, 4, AF_INET)
If ptrHosent <> 0 Then
'convert address and
'get resolved hostname
apiCopyMemory ptrHosent, ByVal ptrHosent, 4
nBytes = apiStrLen(ByVal ptrHosent)
If nBytes > 0 Then
'fill the IP address buffer
sHost = Space$(nBytes)
apiCopyMemory ByVal sHost, ByVal ptrHosent, nBytes
GetHostNameFromIP = sHost
End If
Else
MsgBox "Call to gethostbyaddr failed."
End If
'close the socket
CloseSocket
Else
MsgBox "Invalid IP address"
End If
Else
MsgBox "Failed to open Socket"
End If
End Function
Private Sub cmdResolve_Click()
Dim cResolve As clsResolve
Set cResolve = New clsResolve
MsgBox cResolve.GetHostNameFromIP("66.111.65.129")
MsgBox cResolve.GetIPFromHostName("microsoft.com")
End Sub
相關推薦
根據計算機名獲得IP,和根據IP獲得主機名(轉)
Option Explicit'// define constantsPrivate Const IP_SUCCESS As Long = 0Private Const SOCKET_ERROR As Long = -1Private Const MAX_WSADescrip
住宅動態IP,資料中心IP和移動手機IP之間的區別
什麼時候需要購買住宅動態IP? 住宅動態IP是指私人的IP地址,這意味著你在訪問網路時是通過真實的使用者傳送你的請求。 購買住宅IP可確保你不會被目標網站遮蔽或提供誤導資訊。 什麼時候需要購買資料中心IP? 資料中心IP也稱為靜態IP,或是固定IP。意味著你可以使用一個
在 Ubuntu Linux上,如何更改你的主機名( 計算機名稱)
Ubuntu要求你在安裝計算機時為你的計算機選擇一個名為"主機名"的名稱。 你可以稍後更改這個主機名,但是Ubuntu並沒有提供一個圖形化的介面。 這裡過程也將在 Linux Mint 和其他基於debian的 Linux發行版中工作。 其他Linux發行版- 例如Fedora和其他基於紅帽的發行版-
根據名稱檢索儲存過程內容和根據內容檢索儲存過程
-- GetContentByProcedureName '[dbo].[儲存過程名]' ALTER procedure [dbo].[GetContentByProcedureName] (@ProcedureName nvarchar(500)) as if
獲取服務器IP,客戶端IP
進程 獲取 () base accep roc eight 可能 php_sapi 客戶端IP相關的變量 1. $_SERVER[‘REMOTE_ADDR‘]; 客戶端IP,有可能是用戶的IP,也有可能是代理的IP。 2. $_SERVER[‘HTTP_CLIENT_IP
Apache搭建Web主機(虛擬目錄、分別基於IP地址、端口、主機名)
apache 基於端口區分網站 基於域名區分網站 基於ip區分網站 dns域名解析 Apache介紹 Apache HTTP Server是一款開源的網站服務軟件,在Web服務器領域中長期保持著超過半數的份額,Apache服務器可以運行在Linux、UNIX、Windows等多數操作系統平
C# 之 獲取服務器IP,客戶端IP以及其它
output ipaddress ons use variables 例子 mac地址 user nag 本文主要是從網絡上搜索的文章進行參考,也是提供一個大概的方向和思路吧。當然如果有能用的代碼,可直接復制過去根據自己的情況修改和使用。 一、思路(主要用於局域網內
contso7配置靜態IP,Linux固定IP地址
不使用網路管理配置靜態IP地址 進入目錄 cd /etc/sysconfig/network-scripts 修改以下配置(後邊有引數講解) 輸入ifconfig檢視IP資訊,裡面有IPADDR和NETMASK ifconfig 點開VMware-虛擬網
微信獲取好友真實ip, qq獲取ip,經緯度定位 隱蔽獲取 微信查ip
微信好友ip查詢獲取 QQ好友ip查詢獲取 隱蔽方式 ip獲取不需要好友任何操作 不需要點選任何東西 即可獲取真實的ip地址 經緯度跳轉定位 可利用XML欺騙對方點選 header("Location: url:xxxxxx.png "); 以下是成品 只要你會搭建
穿透內網,連線動態ip,內網ip打洞-----p2p實現原理
轉自:http://www.cnblogs.com/eyye/archive/2012/10/23/2734807.html 網上找了很多,程式碼大堆,原理講清楚透徹的不多。 本人找幾篇講得好的來整理一下。 一片技術文章,最主要的講清楚原理,如果再有完整的能執行的原
C# 之 獲取伺服器IP,客戶端IP以及其它
1、獲取客戶端IP:Request.ServerVariables.Get("Remote_Addr").ToString(); 2、獲取客戶端主機名:Request.ServerVariables.Get("Remote_Host").ToString(); 3、客戶端瀏覽器:Request.
DHCP動態配置ip地址和指定ip地址
實驗準備及目標 1.兩臺虛擬機器 2.服務端IP:192.168.1.1 3.客戶端IP:動態+指定IP:192.168.1.88 服務端 1.DHCP軟體安裝 在軟體安裝包下: rpm -ivh dhcp-4.1.1-38.P1.el6.x86_64.rpm
【乾貨】如何用九州IP地址修改隱藏自己的電腦IP,更換電腦ip。?
現在很多使用者比如公司、學校等,處於同一區域網內的使用者,對外IP確實相同,就導致了其中一人或多人用過之後,其他人就無法再次使用,為了解決這個問題,各種換IP軟體隨之出現。網上有各種方法和軟體,有收費的頁遊免費的,但是操作起來卻都不是那麼簡單,這裡就不一一列舉了,所以今日特此
python爬蟲之反爬蟲(隨機user-agent,獲取代理ip,檢測代理ip可用性)
python爬蟲之反爬蟲(隨機user-agent,獲取代理ip,檢測代理ip可用性) 目錄 隨機User-Agent 獲取代理ip 檢測代理ip可用性 隨機User-Agent fake_useragent庫,偽
使用udhcpc能獲取到DHCP自動分配的IP,但是該IP卻沒有設定到網絡卡上
udhcpc是一個面向嵌入式系統的非常小的DHCP客戶端,字母的縮寫微- DHCP -客戶端(μDHCPc)。1.udhcpc -i eth0 udhcpc只是獲取一個IP,我們需要把\busybox-1.1.2\examples\udhcp下的指令碼simple.scri
c#中獲取伺服器IP,客戶端IP以及Request.ServerVariables詳細說明
客戶端ip: Request.ServerVariables.Get(“Remote_Addr”).ToString(); 客戶端主機名: Request.ServerVariables.Get(“Remote_Host”).ToString();
IP 別名和輔助 IP 地址
概述 IP 別名(IP Alias),輔助ip地址(Secondary IP Address) IP alias 是由 ifconfig 程式來建立和維護的,而 secondary IP address 則是由 ip 程式來建立和維護的。ip addr ad
在CentOS/RHEL 7中,使用hostnamectl的命令列工具,檢視或修改與主機名相關的配置
在CentOS/RHEL 7中,有個叫hostnamectl的命令列工具,它允許你檢視或修改與主機名相關的配置。 要檢視主機名相關的設定: $ hostnamectl status 只檢視靜態、瞬態或靈活主機名,分別使用“--static”,“--transien
計算機網絡三:域名、IP地址和TCP/IP協議
情況下 我們 prot 組成 連續 網絡層 org 物理地址 通信網 一、域名 域名(Domain Name),簡稱域名、網域,是由一串用點分隔的字符型標誌名字組成的Internet上某一臺計算機或計算機組的名稱,用於在數據傳輸時標識計算機的電子方位(有時也指
【程式】Windows下根據計算機名獲取IP地址的C語言程式
方法一(當指定的裝置不存在時,有可能返回的是本機的IP地址,所以不建議使用): #include <stdio.h> #include <WinSock2.h> #pragm