PDA

View Full Version : [C#] indirizzo ip del computer


nikel
14-07-2010, 15:05
ciao ragazzi.

per trovare l'indirizzo ip del mio pc ho trovato questo...

IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName());

tuttavia mi restituisce 4 indirizzi
i primi 2 sono ipv6
e gli ultimi due sono indirizzi locali ipv4 (192.168.1.x)

come faccio a trovare l'indirizzo ipv4 del mio computer? (quello che ad esempio si visualizza su ip-address.com)

Kenger
14-07-2010, 15:57
Immagino che il problema sia che sei dietro un router e quindi dovresti chiedere l'IP al router. Non sò aiutarti però :(

nikel
14-07-2010, 16:57
sicuramente sono dietro al mio bel usr9107a ;)
come posso fare?

Darecon
14-07-2010, 18:14
http://www.whatismyip.org/

Puoi parsare il contenuto di una pagina web del genere.. :)

!fazz
14-07-2010, 18:14
la soluzione più semplice è fare una httpwebrequest ad un sito tipo www.ilmioip.it o similari e parserizzare l'html con delle regex per estrapolare l'indirizzo ip dalla pagina


edit googlato un attimo



using System;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;

namespace DreamInCode.Snippets
{
public class IpFinder
{
public static IPAddress GetExternalIp()
{
string whatIsMyIp = "http://whatismyip.com";
string getIpRegex = @"(?<=<TITLE>.*)\d*\.\d*\.\d*\.\d*(?=</TITLE>)";
WebClient wc = new WebClient();
UTF8Encoding utf8 = new UTF8Encoding();
string requestHtml = "";
try
{
requestHtml = utf8.GetString(wc.DownloadData(whatIsMyIp));
}
catch (WebException we)
{
// do something with exception
Console.Write(we.ToString());
}
Regex r = new Regex(getIpRegex);
Match m = r.Match(requestHtml);
IPAddress externalIp = null;
if (m.Success)
{
externalIp = IPAddress.Parse(m.Value);
}
return externalIp;
}
}
}



non è detto che funzioni prova

nikel
14-07-2010, 18:26
non è una cattiva idea ci stavo pensando anche io ^^