请问如何获取网页的公网ip

zengfanying 2007-10-12 07:19:16
请问在vb编程中如何获取指定网页的公网ip,(我的网站是动态ip)
...全文
341 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
浪客 2007-10-21
  • 打赏
  • 举报
回复
最简单的是用系统的ping,
vb里运行ping,结果输出到一个文件里,然后从那里获取ip
zengfanying 2007-10-20
  • 打赏
  • 举报
回复
我为什么不能加分,它提示我无权加分
zengfanying 2007-10-15
  • 打赏
  • 举报
回复
我在网上下载了宝丽通网络媒体播放器,里面有一个控件,我想用此控件做一个播放器,但不知道如何把此控件封在我的程序里,让没有装宝丽通网络媒体播放器的电脑里只要装我的播放器就可以用,望各位大虾指教一下,另外请教一个问题,我在一个界面下,做几个播放窗口(既几个播放控件),是不是占用系统资源是只有一个的几倍?有没有只要一个控件可以同时播放几个文件(多媒体文件)的办法?

我想播放固定位置的几个asf电影,然后客户根据他的需要看某一部电影(双击播放),应该可以不需要别的控件吧?

兄弟,能否告诉我你的qq号,我以后可以向你请教问题
幻影时空 2007-10-15
  • 打赏
  • 举报
回复
播放什么呀?呵呵!
zengfanying 2007-10-14
  • 打赏
  • 举报
回复
用WMP控件进行多媒体编程,还需要什么控件?
zengfanying 2007-10-14
  • 打赏
  • 举报
回复
&H100 And &HFF&
两种颜色?运行报错,去掉&H100 后ok
幻影时空 2007-10-14
  • 打赏
  • 举报
回复
Private Const WS_VERSION_REQD = &H101
Private Const WS_VERSION_MAJOR = WS_VERSION_REQD &H100 And &HFF&
Private Const WS_VERSION_MINOR = WS_VERSION_REQD And &HFF&
Private Const MIN_SOCKETS_REQD = 1

那块代码是这样的嘛!

呵呵!
幻影时空 2007-10-13
  • 打赏
  • 举报
回复
那你是已知域名是吧?

那可以直接根据域名来获取IP的!!

==============================
vb中从域名得到IP及从IP得到域名

  
Private Const WS_VERSION_REQD = &H101
Private Const WS_VERSION_MAJOR = WS_VERSION_REQD &H100 And &HFF&
Private Const WS_VERSION_MINOR = WS_VERSION_REQD And &HFF&
Private Const MIN_SOCKETS_REQD = 1

Private Const SOCKET_ERROR = -1
Private Const WSADescription_Len = 256
Private Const WSASYS_Status_Len = 128

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 WSADescription_Len) As Byte
szSystemStatus(0 To WSASYS_Status_Len) As Byte
iMaxSockets As Integer
iMaxUdpDg As Integer
lpszVendorInfo As Long
End Type
Private Declare Function gethostbyaddr Lib "WSOCK32.DLL" (addr As Any, ByVal _
byteslen As Integer, addrtype As Integer) As Long
Private Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long
Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal _
wVersionRequired&, lpWSAData As WSADATA) As Long
Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal _
hostname$) As Long
Private Declare Sub RtlMoveMemory Lib "KERNEL32" (hpvDest As Any, _
ByVal hpvSource&, ByVal cbCopy&)

Function hibyte(ByVal wParam As Integer) 注释:获得整数的高位
hibyte = wParam &H100 And &HFF&
End Function

Function lobyte(ByVal wParam As Integer) 注释:获得整数的低位
lobyte = wParam And &HFF&
End Function

Function SocketsInitialize()
Dim WSAD As WSADATA
Dim iReturn As Integer
Dim sLowByte As String, sHighByte As String, sMsg As String

iReturn = WSAStartup(WS_VERSION_REQD, WSAD)

If iReturn <> 0 Then
MsgBox "Winsock.dll 没有反应."
End
End If

If lobyte(WSAD.wversion) < WS_VERSION_MAJOR Or (lobyte(WSAD.wversion) = WS_VERSION_MAJOR And hibyte(WSAD.wversion) < WS_VERSION_MINOR) Then
sHighByte = Trim$(str$(hibyte(WSAD.wversion)))
sLowByte = Trim$(str$(lobyte(WSAD.wversion)))
sMsg = "Windows Sockets版本 " & sLowByte & "." & sHighByte
sMsg = sMsg & " 不被winsock.dll支持 "
MsgBox sMsg
End
End If

If WSAD.iMaxSockets < MIN_SOCKETS_REQD Then
sMsg = "这个系统需要的最少Sockets数为 "
sMsg = sMsg & Trim$(str$(MIN_SOCKETS_REQD))
MsgBox sMsg
End
End If

End Function

Sub SocketsCleanup()
Dim lReturn As Long

lReturn = WSACleanup()

If lReturn <> 0 Then
MsgBox "Socket错误 " & Trim$(str$(lReturn)) & " occurred in Cleanup "
End
End If
End Sub

Sub Form_Load()
注释:初始化Socket
SocketsInitialize
End Sub

Private Sub Form_Unload(Cancel As Integer)
注释:清除Socket
SocketsCleanup
End Sub
Private Function getip(name As String) As String
Dim hostent_addr As Long
Dim host As HOSTENT
Dim hostip_addr As Long
Dim temp_ip_address() As Byte
Dim i As Integer
Dim ip_address As String

hostent_addr = gethostbyname(name)

If hostent_addr = 0 Then
getip = "" 注释:主机名不能被解释
Exit Function
End If

RtlMoveMemory host, hostent_addr, LenB(host)
RtlMoveMemory hostip_addr, host.hAddrList, 4

ReDim temp_ip_address(1 To host.hLength)
RtlMoveMemory temp_ip_address(1), hostip_addr, host.hLength

For i = 1 To host.hLength
ip_address = ip_address & temp_ip_address(i) & "."
Next
ip_address = Mid$(ip_address, 1, Len(ip_address) - 1)

getip = ip_address

End Function

Private Sub Command1_click()
Dim str As String
str = getip(Text1.Text)
If str = "" Then
Text2.Text = "主机名不能被解释"
Else
Text2.Text = str
End If
End Sub
Private Function getname(addrstr As String) As String
Dim hostent_addr As Long
Dim host As HOSTENT
Dim addr(0 To 50) As Byte
Dim addrs As String
Dim hname(1 To 50) As Byte
Dim str As String
Dim i As Integer, j As Integer
Dim temp_int As Integer
Dim byt As Byte
str = Trim$(addrstr)
i = 0
j = 0
Do
temp_int = 0
i = i + 1
Do While Mid$(str, i, 1) >= "0" And Mid$(str, i, 1) <= "9" And i <= Len(str)
temp_int = temp_int * 10 + Mid$(str, i, 1)
i = i + 1
Loop
If temp_int <= 255 Then
addr(j) = temp_int
j = j + 1
End If

Loop Until Mid$(str, i, 1) <> "." Or i > Len(str) Or temp_int > 255
If temp_int > 255 Then
getname = "地址非法"
Exit Function
End If
hostent_addr = gethostbyaddr(addr(0), j, 2)
If hostent_addr = 0 Then
getname = "此地址无法解析"
Exit Function
End If
RtlMoveMemory host, hostent_addr, LenB(host)
RtlMoveMemory hname(1), host.hname, 50
j = 51
For i = 1 To 50
If hname(i) = 0 Then
j = i
End If
If i >= j Then
hname(i) = 32
End If
Next i
getname = Trim$(StrConv(hname, vbUnicode))
End Function
Private Sub Command2_Click()
Dim name As String
name = getname(Text2.Text)
If name = "" Then
name = "此地址没有域名"
End If
Text1.Text = name
End Sub
zengfanying 2007-10-13
  • 打赏
  • 举报
回复
3楼的兄弟,能否告诉我你的qq号,我以后可以向你请教问题,
本想给你加分,但系统提示我发贴不到5天
Private Const WS_VERSION_MAJOR = WS_VERSION_REQD &H100 And &HFF&
hibyte = wParam &H100 And &HFF&
上面两句有问题
请问你懂不懂asp之类的
zengfanying 2007-10-12
  • 打赏
  • 举报
回复
很简单,我的意思是只要我做的浏览器访问网页,就在我的浏览器上面显示所访问网页的ip地址,不用网页告诉我,是我的程序自动探知的
幻影时空 2007-10-12
  • 打赏
  • 举报
回复
不知你是要用网页的访问来获取公网IP?还是...什么?感觉没把问题描述清楚!

如果说是你用于做网站服务器的IP是动态的,要让你程序根据动态IP来访问到,那么就可以使用花生壳之类的动态(IP)域名管理软件来实现!

如果你是要在指定域名下,获取网站服务器的IP,你可以在指定页面,通过页面代码来返回IP...呵呵!

1,502

社区成员

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

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