VS2012 - External IP   zodpovězená otázka

VB.NET

Vím že takhle zjistím externí ip adresu:

Dim GetEPAddress As String = String.Empty
Dim webclient As New System.Net.WebClient
GetEPAddress = System.Text.Encoding.ASCII.GetString((webclient.DownloadData("http://checkip.dyndns.org:8245/")))

ale chtěl bych se zeptat jestli zjištění by nešlo urychlit nebo jestli nejde nastavit časový interval. Když by byla překročena tak by se pokračovalo v kodu.

Ptám se z důvodu že se mi program zasekne a pokračuje až se zjistí. Děkuji za odpověď...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Více idiotský způsob zjišťování adresy IP jsem ještě neviděl, bravo! Slyšel jste někdy o System.Net.IPEndPoint?

nahlásit spamnahlásit spam 0 / 4 odpovědětodpovědět

Diky za radu... Kdyz jsem hledal tak jiny zpusob jsem nenasel.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud se jedná o externí IP adresu, o kterou zde očividně jde, tak váš neidiotský způsob selhává, protože zjišťuje lokální adresu. A nevím o jiném způsobu, jak bezpečně zjistit externí adresu bez dotazu přes nějaký server v internetu.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Toto funguje bez problémů, pokud má uživatel veřejnou IP adresu a není nutné trapně parsovat nějaký řetězec, který se může kdykoliv změnit...

Imports System.Net
Imports System.Net.Sockets
Imports System.IO
Module Module1
  Sub Main()
    Using client As New TcpClient
      Try
        Dim timeout = 30
        client.ReceiveTimeout = timeout
        client.SendTimeout = timeout
        client.Connect("google.com", 80)
        Dim address = DirectCast(client.Client.LocalEndPoint, IPEndPoint).Address
        Debug.WriteLine(address.ToString())
      Catch ex As SocketException
      Catch ex As IOException
      Catch ex As Exception
      End Try
    End Using
  End Sub
End Module
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Já chci EXTERNÍ

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

veřejná IP = externí IP

Jinak nepočítejte s tím,že Vám někdo bude psát hotový kód. Myslím,že jako hint Vám vše uvedené bohatě stačí

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To asi jo ale váš kód vrací interní ip.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nejprve si udělejte jasno v tom, co je externí, interní a veřejná IP adresa a potom teprve otravujte na diskusních fórech.

nahlásit spamnahlásit spam -1 / 3 odpovědětodpovědět

Tento postup je zbytečný. Tím zjistíte adresu, přes kterou se bude přístupovat mimo LAN.

U dotazu na "externí" adresu bych učekával, že se snaží zjistit venkovní adresu, kterou přistupuje do internetu. A ta nemusí být stejná jako tato adresa.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Není poznat, zda je toto reakce na můj nebo jiný příspěvek, ale:

Pokud má uživatel veřejnou IP adresu a v rámci domácí sítě není připojen přes žádné další síťové prvky (Wi-Fi router), bude mnou uvedený kód vracet přesně tu adresu, jakou se počítač bude jevit vnějšímu světu, tj. "externí" adresu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To jistě, ale je potřeba počítat s tím, že to rozhodně není pravidlem a proto není takový algoritmus vhodný.

Ať už by to bylo jakkoliv, tak prvně uvedená varianta, kdy se na adresu ptáme serveru v internetu je vhodná na určitě případy a označovat ji jako idiotskou je přinejmenším krátkozraké.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

1. Použil bych místo metody DownloadData raději přímo DownloadString, která vrací přímo text.

2. Pro asynchronní (neblokující) volání lze využít varianta DownloadStringAsync.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Můžete mi sem hodit opravený kód s tim DownloadStringAsync ? Děkuji..

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ze StackOverflow diskusí:

var client = new WebClient();
client.DownloadStringCompleted += (sender, e) => 
{
   doSomeThing(e.Result);
};

client.DownloadStringAsync(uri);
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback