Phoenix85 (Normal User)
Newbie
Messaggi: 14
Iscritto: 10/03/2008
|
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
Codice sorgente - presumibilmente C# / VB.NET |
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
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
|
|
Phoenix85 (Normal User)
Newbie
Messaggi: 14
Iscritto: 10/03/2008
|
Postato originariamente da gantonio:
Devi semplicemente leggere questa pagina da internet
http://pchelplive.com/ip.php
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 e tornerò a chiedervelo dopo che mi è esplosa la testa:P)
Grazie ancora per il supporto! |
|
Dax89 (Member)
Expert
Messaggi: 283
Iscritto: 07/04/2007
|
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).
Codice sorgente - presumibilmente VB.NET |
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 il 14/03/2008 alle 8:40 |
|
Phoenix85 (Normal User)
Newbie
Messaggi: 14
Iscritto: 10/03/2008
|
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).
Codice sorgente - presumibilmente VB.NET |
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! |
|
Phoenix85 (Normal User)
Newbie
Messaggi: 14
Iscritto: 10/03/2008
|
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???
Codice sorgente - presumibilmente C# / VB.NET |
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??
|
|
Dax89 (Member)
Expert
Messaggi: 283
Iscritto: 07/04/2007
|
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
|
|
Phoenix85 (Normal User)
Newbie
Messaggi: 14
Iscritto: 10/03/2008
|
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
|
|
Dax89 (Member)
Expert
Messaggi: 283
Iscritto: 07/04/2007
|
Quella funzione ti restituisce una classe IPAddress, per ottenerlo sotto forma di 'string' basta usare semplicemente il metodo ToString() della classe IPAddress
|
|