Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: okik en 2 Febrero 2015, 19:52 pm



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

Código
  1. Imports System.Net
  2. Public Class Form1
  3.    Dim mem As String
  4.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  5.  
  6.  
  7.  
  8.        Dim strHostName As String
  9.        Dim strIPAddress As String
  10.        strHostName = "http://www.google.es"
  11.        strHostName = System.Net.Dns.GetHostName()
  12.        strIPAddress = System.Net.Dns.GetHostEntry(strHostName).AddressList(0).ToString()
  13.  
  14.        mem = strIPAddress
  15.        TextBox1.Text = strIPAddress
  16.  
  17.    End Sub
  18. End Class

Pero no funciona

el código original en lugar de poner:

 System.Net.Dns.GetHostEntry

ponía:   System.Net.Dns.GetHostByName

pero 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:

Código
  1. Imports System.Net
  2. Public Class Form1
  3.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  4.        Dim host As IPHostEntry = Dns.GetHostEntry("www.google.es")
  5.        Dim ip As IPAddress() = host.AddressList
  6.        Dim index As Integer
  7.  
  8.        For index = 0 To ip.Length - 1
  9.            TextBox1.Text = ip(index).ToString
  10.        Next index
  11.    End Sub
  12. 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:

Código
  1. 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.

Código
  1. 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:
Código
  1.        Dim IPv4List As New List(Of String)(HostNameToIP("foro.elhacker.net", Net.Sockets.AddressFamily.InterNetwork))
  2.        Dim IPv6List As New List(Of String)(HostNameToIP("LOCALHOST", Net.Sockets.AddressFamily.InterNetworkV6))
  3.  
  4.        MessageBox.Show(IPv4List(0)) ' Result: 108.162.205.73
  5.        MessageBox.Show(IPv6List(0)) ' Result: ::1

Source:
Código
  1.    ' HostName To IP
  2.    ' By Elektro
  3.    '
  4.    ' Usage Examples :
  5.    ' MessageBox.Show(HostNameToIP("foro.elhacker.net", Net.Sockets.AddressFamily.InterNetwork).First)
  6.    '
  7.    ''' <summary>
  8.    ''' Gets the specified addresses associated to a Host.
  9.    ''' </summary>
  10.    ''' <param name="hotsName">The Host name.</param>
  11.    ''' <param name="addressFamily">The address family.</param>
  12.    ''' <returns>The addresses.</returns>
  13.    ''' <exception cref="System.NotImplementedException">Address filtering not implemented yet.</exception>
  14.    Public Function HostNameToIP(ByVal hotsName As String,
  15.                                 ByVal addressFamily As Net.Sockets.AddressFamily) As IEnumerable(Of String)
  16.  
  17.        Dim hostInfo As Net.IPHostEntry = Net.Dns.GetHostEntry(hotsName)
  18.        Dim addressList As IEnumerable(Of String)
  19.  
  20.        Try
  21.            hostInfo = Net.Dns.GetHostEntry(hotsName)
  22.  
  23.            Select Case addressFamily
  24.  
  25.                Case Net.Sockets.AddressFamily.InterNetwork,
  26.                    Net.Sockets.AddressFamily.InterNetworkV6 ' IPv4, IPv6.
  27.  
  28.                    addressList = From address As Net.IPAddress In hostInfo.AddressList
  29.                                  Where address.AddressFamily = addressFamily
  30.                                  Select (address.ToString)
  31.  
  32.                Case Else
  33.                    Throw New NotImplementedException("Address filtering not implemented yet.")
  34.  
  35.            End Select
  36.  
  37.        Catch ex As Net.Sockets.SocketException
  38.            Throw
  39.  
  40.        Catch ex As ArgumentNullException
  41.            Throw
  42.  
  43.        Catch ex As Exception
  44.            Throw
  45.  
  46.        End Try
  47.  
  48.        Return addressList
  49.  
  50.    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.