Oppure

Loading
11/03/08 22:43
Phoenix85
Ciao a tutti...
sto "smanettando" un po' con il vb net, così giusto per perdere il tempo in qualcosa di costruttivo...
sperando di imparare il più possibile. :)

Ho una domanda da farvi:
sto scrivendo una piccola applicazione che deve ricavare l'ip della macchina dove sta girando.

Ho provato ad utilizzare
Dim mioIp As String = Dns.Resolve(Dns.GetHostName).AddressList(0).ToString


come mi consigliava zio google...

ma il problema è che mi viene fornito l'ip della mia macchina, inetrno alla mia rete a casa.
Io vorrei conoscere l'ip, con il quale la macchina è visibile dal web (sono dietro un router).

Se po' faaaa? Come si fa?
Grazie a tutti:D
aaa
13/03/08 6:58
gantonio
Devi semplicemente leggere questa pagina da internet

pchelplive.com/…

con il tuo programma ...
aaa
13/03/08 22:40
Phoenix85
Postato originariamente da gantonio:

Devi semplicemente leggere questa pagina da internet

pchelplive.com/…

con il tuo programma ...

Ciao,
innanzitutto grazie mille per la risposta.

Come avrai intuito dai miei post, sono nubbissimo con il net quindi riesco a fare poco e niente.
E' un listato molto lungo, quello per prelevare l'ip da quel sito internet, oppure qualcuno riesce a mostrarmelo? (sempre se si tratta di poche righe...sennò mi arrangio :d e tornerò a chiedervelo dopo che mi è esplosa la testa:P)

Grazie ancora per il supporto!
aaa
14/03/08 7:39
Dax89
Tempo fa ho avuto lo stesso problema e ho risolto con questo codice (era in C# lo convertito in VB.NET quindi ci possono essere errori).

 Imports System
 Imports System.Net
 Imports System.Text
 Imports System.Text.RegularExpressions

 Namespace MyNamespace
     Public Class IpFinder
         Public Shared Function GetExternalIp() As IPAddress
             Dim whatIsMyIp As String = "http://whatismyip.com"
             Dim getIpRegex As String = "(?<=<TITLE>.*)\d*\.\d*\.\d*\.\d*(?=</TITLE>)"
             Dim wc As New WebClient()
             Dim utf8 As New UTF8Encoding()
             Dim requestHtml As String = ""
             Try
                 requestHtml = utf8.GetString(wc.DownloadData(whatIsMyIp))
             Catch we As WebException
                 ' do something with exception
                 Console.Write(we.ToString())
            End Try
             Dim r As New Regex(getIpRegex)
             Dim m As Match = r.Match(requestHtml)
             Dim externalIp As IPAddress = Nothing
             If m.Success Then
                 externalIp = IPAddress.Parse(m.Value)
             End If
             Return externalIp
         End Function
     End Class
 End Namespace

Ultima modifica effettuata da Dax89 14/03/08 7:40
aaa
14/03/08 9:45
Phoenix85
Postato originariamente da Dax89:

Tempo fa ho avuto lo stesso problema e ho risolto con questo codice (era in C# lo convertito in VB.NET quindi ci possono essere errori).

 Imports System
 Imports System.Net
 Imports System.Text
 Imports System.Text.RegularExpressions

 Namespace MyNamespace
     Public Class IpFinder
         Public Shared Function GetExternalIp() As IPAddress
             Dim whatIsMyIp As String = "http://whatismyip.com"
             Dim getIpRegex As String = "(?<=<TITLE>.*)\d*\.\d*\.\d*\.\d*(?=</TITLE>)"
             Dim wc As New WebClient()
             Dim utf8 As New UTF8Encoding()
             Dim requestHtml As String = ""
             Try
                 requestHtml = utf8.GetString(wc.DownloadData(whatIsMyIp))
             Catch we As WebException
                 ' do something with exception
                 Console.Write(we.ToString())
            End Try
             Dim r As New Regex(getIpRegex)
             Dim m As Match = r.Match(requestHtml)
             Dim externalIp As IPAddress = Nothing
             If m.Success Then
                 externalIp = IPAddress.Parse(m.Value)
             End If
             Return externalIp
         End Function
     End Class
 End Namespace



Grazie, non mille...ma un milione!
Appena torno a casa, provo il codice e ti faccio sapere.
Sei stato gentilissimo e disponibilissimo.
Appena provato, vi scrivo....grazie ancora!:asd:
aaa
14/03/08 16:47
Phoenix85
Eccomi qui, a casa...
sto provando lo script.
Ho inserito in un form un msgbox contenente il valore che ritorna la funzione che mi hai descritto...
ma mi da un msgbox vuoto.

Il mio dubbio è che sia cambiato qualcosa nel sito whatismyip.com, per cui non riesce a ricavarne + l'ip.

A questo prposito però avrei bisogno di capire qualcosa.
A cosa serve questa istruzione???
Dim getIpRegex As String = "(?<=<TITLE>.*)\d*\.\d*\.\d*\.\d*(?=</TITLE>)"


Ho pensato che ricavasse i dati dell'ip, che venivano stampati tra i tag <title> della pagina.
Erro?

Se è così..nel sito non viene + stampato l'ip nel titolo della pagina...e dovrebbe essere questo l'errore.
Sbaglio?? :)
aaa
14/03/08 21:33
Dax89
Sì, quel codice ricava (o ricavava) l'ip pubblico connettendosi in quel sito e, per mezzo delle Regular Expressions trova (o trovava) l'ip che stava tra i quei tags, probabilmente il codice della pagina è cambiato ed il codice non funziona più, però basta trovare un altro sito e fare lo stesso procedimento, oppure aggiustare quel codice stesso.
Putroppo non ho mai trovato delle classi .NET per trovare l'ip pubblico, e, non so se sia possibile.
Comunque spero di averti dato qualche punto di riferimento su come devi fare :D
aaa
15/03/08 12:50
Phoenix85
Ciao,
scusa se scrivo una cosa così stupida....
ma se volessi stampare l'ip con un msgbox nel form_load, cosa devo fare?
L'ip è contenuto nella variabile externalIp di getexternalip(), giusto?

Mi sta dando degli errori che su google non riesco a trovare.
Grazie ancora :d
aaa