Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Trovare l'ip ESTERNO
Forum - C# / VB.NET - Trovare l'ip ESTERNO

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
Phoenix85 (Normal User)
Newbie


Messaggi: 14
Iscritto: 10/03/2008

Segnala al moderatore
Postato alle 23:43
Martedì, 11/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

  1. 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

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 7:58
Giovedì, 13/03/2008
Devi semplicemente leggere questa pagina da internet

http://pchelplive.com/ip.php

con il tuo programma ...

PM Quote
Avatar
Phoenix85 (Normal User)
Newbie


Messaggi: 14
Iscritto: 10/03/2008

Segnala al moderatore
Postato alle 23:40
Giovedì, 13/03/2008
Testo quotato

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 :d e tornerò a chiedervelo dopo che mi è esplosa la testa:P)

Grazie ancora per il supporto!

PM Quote
Avatar
Dax89 (Member)
Expert


Messaggi: 283
Iscritto: 07/04/2007

Segnala al moderatore
Postato alle 8:39
Venerdì, 14/03/2008
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

  1. Imports System
  2.  Imports System.Net
  3.  Imports System.Text
  4.  Imports System.Text.RegularExpressions
  5.  
  6.  Namespace MyNamespace
  7.      Public Class IpFinder
  8.          Public Shared Function GetExternalIp() As IPAddress
  9.              Dim whatIsMyIp As String = "http://whatismyip.com"
  10.              Dim getIpRegex As String = "(?<=<TITLE>.*)\d*\.\d*\.\d*\.\d*(?=</TITLE>)"
  11.              Dim wc As New WebClient()
  12.              Dim utf8 As New UTF8Encoding()
  13.              Dim requestHtml As String = ""
  14.              Try
  15.                  requestHtml = utf8.GetString(wc.DownloadData(whatIsMyIp))
  16.              Catch we As WebException
  17.                  ' do something with exception
  18.                  Console.Write(we.ToString())
  19.             End Try
  20.              Dim r As New Regex(getIpRegex)
  21.              Dim m As Match = r.Match(requestHtml)
  22.              Dim externalIp As IPAddress = Nothing
  23.              If m.Success Then
  24.                  externalIp = IPAddress.Parse(m.Value)
  25.              End If
  26.              Return externalIp
  27.          End Function
  28.      End Class
  29.  End Namespace


Ultima modifica effettuata da Dax89 il 14/03/2008 alle 8:40
PM Quote
Avatar
Phoenix85 (Normal User)
Newbie


Messaggi: 14
Iscritto: 10/03/2008

Segnala al moderatore
Postato alle 10:45
Venerdì, 14/03/2008
Testo quotato

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

  1. Imports System
  2.  Imports System.Net
  3.  Imports System.Text
  4.  Imports System.Text.RegularExpressions
  5.  
  6.  Namespace MyNamespace
  7.      Public Class IpFinder
  8.          Public Shared Function GetExternalIp() As IPAddress
  9.              Dim whatIsMyIp As String = "http://whatismyip.com"
  10.              Dim getIpRegex As String = "(?<=<TITLE>.*)\d*\.\d*\.\d*\.\d*(?=</TITLE>)"
  11.              Dim wc As New WebClient()
  12.              Dim utf8 As New UTF8Encoding()
  13.              Dim requestHtml As String = ""
  14.              Try
  15.                  requestHtml = utf8.GetString(wc.DownloadData(whatIsMyIp))
  16.              Catch we As WebException
  17.                  ' do something with exception
  18.                  Console.Write(we.ToString())
  19.             End Try
  20.              Dim r As New Regex(getIpRegex)
  21.              Dim m As Match = r.Match(requestHtml)
  22.              Dim externalIp As IPAddress = Nothing
  23.              If m.Success Then
  24.                  externalIp = IPAddress.Parse(m.Value)
  25.              End If
  26.              Return externalIp
  27.          End Function
  28.      End Class
  29.  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:

PM Quote
Avatar
Phoenix85 (Normal User)
Newbie


Messaggi: 14
Iscritto: 10/03/2008

Segnala al moderatore
Postato alle 17:47
Venerdì, 14/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

  1. 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?? :)

PM Quote
Avatar
Dax89 (Member)
Expert


Messaggi: 283
Iscritto: 07/04/2007

Segnala al moderatore
Postato alle 22:33
Venerdì, 14/03/2008
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

PM Quote
Avatar
Phoenix85 (Normal User)
Newbie


Messaggi: 14
Iscritto: 10/03/2008

Segnala al moderatore
Postato alle 13:50
Sabato, 15/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 :d

PM Quote
Avatar
Dax89 (Member)
Expert


Messaggi: 283
Iscritto: 07/04/2007

Segnala al moderatore
Postato alle 15:46
Sabato, 15/03/2008
Quella funzione ti restituisce una classe IPAddress, per ottenerlo sotto forma di 'string' basta usare semplicemente il metodo ToString() della classe IPAddress ;)

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo