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.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
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
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
Cita de: 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.
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
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.