Título: Obtener IP de una URL mediante VB. Net 2010
Publicado por: okik en 2 Febrero 2015, 19:52 pm
Hola He buscado y buscado pero no lo he conseguido. Todo lo que encuentro es similar a esto Imports System.Net Public Class Form1 Dim mem As String Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim strHostName As String Dim strIPAddress As String strHostName = "http://www.google.es" strHostName = System.Net.Dns.GetHostName() strIPAddress = System.Net.Dns.GetHostEntry(strHostName).AddressList(0).ToString() mem = strIPAddress TextBox1.Text = strIPAddress End Sub End Class
Pero no funciona el código original en lugar de poner: System.Net.Dns. GetHostEntryponía: System.Net.Dns. GetHostByNamepero VB2010 me lo pone como error con una linea verde debajo en señal de advertencia de posible error. si uso GetHostEntry no me lo subraya pero me da un número muy raro con expresiones variadas si uso GetHostByName me da un IP normal del tipo: XX.XXX.XX.XXX pero siempre me da el mismo. Da igual la URL que introduzca en strHostName Gracias
Título: Re: Obtener IP de una URL mediante VB. Net 2010
Publicado por: okik en 2 Febrero 2015, 20:28 pm
Ya lo he conseguido ;) Este es el código para VB.Net 2010: Imports System.Net Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim host As IPHostEntry = Dns.GetHostEntry("www.google.es") Dim ip As IPAddress() = host.AddressList Dim index As Integer For index = 0 To ip.Length - 1 TextBox1.Text = ip(index).ToString Next index End Sub End Class
Título: Re: Obtener IP de una URL mediante VB. Net 2010
Publicado por: seba123neo en 4 Febrero 2015, 16:34 pm
en teoria, el primer valor del array es la IP, asi que no hace falta hacer el bucle for. proba solo poner: TextBox1.Text = ip(0).ToString
Título: Re: Obtener IP de una URL mediante VB. Net 2010
Publicado por: Eleкtro en 4 Febrero 2015, 22:11 pm
en teoria, el primer valor del array es la IP, asi que no hace falta hacer el bucle for. TextBox1.Text = ip(0).ToString
Hombre en teoría es la IP ya que es una lista de direcciones, el problema es que a veces el primer item de la colección suele ser una IPv6, a mi también me dió problemas en el pasado.
Bueno, he escrito un ejemplo para ayudarte a obtener las IPv4 asociadas con "X" página Modo de empleo: Dim IPv4List As New List(Of String)(HostNameToIP("foro.elhacker.net", Net.Sockets.AddressFamily.InterNetwork)) Dim IPv6List As New List(Of String)(HostNameToIP("LOCALHOST", Net.Sockets.AddressFamily.InterNetworkV6)) MessageBox.Show(IPv4List(0)) ' Result: 108.162.205.73 MessageBox.Show(IPv6List(0)) ' Result: ::1
Source: ' HostName To IP ' By Elektro ' ' Usage Examples : ' MessageBox.Show(HostNameToIP("foro.elhacker.net", Net.Sockets.AddressFamily.InterNetwork).First) ' ''' <summary> ''' Gets the specified addresses associated to a Host. ''' </summary> ''' <param name="hotsName">The Host name.</param> ''' <param name="addressFamily">The address family.</param> ''' <returns>The addresses.</returns> ''' <exception cref="System.NotImplementedException">Address filtering not implemented yet.</exception> Public Function HostNameToIP(ByVal hotsName As String, ByVal addressFamily As Net.Sockets.AddressFamily) As IEnumerable(Of String) Dim hostInfo As Net.IPHostEntry = Net.Dns.GetHostEntry(hotsName) Dim addressList As IEnumerable(Of String) Try hostInfo = Net.Dns.GetHostEntry(hotsName) Select Case addressFamily Case Net.Sockets.AddressFamily.InterNetwork, Net.Sockets.AddressFamily.InterNetworkV6 ' IPv4, IPv6. addressList = From address As Net.IPAddress In hostInfo.AddressList Where address.AddressFamily = addressFamily Select (address.ToString) Case Else Throw New NotImplementedException("Address filtering not implemented yet.") End Select Catch ex As Net.Sockets.SocketException Throw Catch ex As ArgumentNullException Throw Catch ex As Exception Throw End Try Return addressList End Function
Título: Re: Obtener IP de una URL mediante VB. Net 2010
Publicado por: seba123neo en 5 Febrero 2015, 00:09 am
a mi tambien me dio problema con el ipv6 pero para sacar la ip de una red local, no de un host remoto, no sabria si pasa lo mismo tambien en ese caso.
|