Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  5 1189
Koden under virker ikke. Feilmelding: "System.Net.Sockets.SocketsException: Kjenner ingen slik vert"

Kode

Imports System
Imports System.Net

'Henter HOST name adressen START
            Dim name As String = System.Net.Dns.GetHostEntry("192.168.1." & ip.Text).HostName()
            HostValue.Text = name
            'SLUTT
Kopierte koden fra nett og la inn

Kode

192.168.1." & ip.Text
selv, da original koden hadde en hel ip adresse, trenger jeg en variabel.

På forhånd takk for svar.
Hvem er det som bruker VB i dag? Bytt over til et fornuftig programmeringsspråk som C#, som har bred støtte på Windows systemer. Visual Basic har ikke vært oppdatert siden 2005[?].
Hhmm. Ja hadde tenkt å prøve det. Men kan ikke C#, hvor forskjellig er det?
Trigonoceps occipita
vidarlo's Avatar
Donor
Sitat av 0xFF Vis innlegg
Hvem er det som bruker VB i dag? Bytt over til et fornuftig programmeringsspråk som C#, som har bred støtte på Windows systemer. Visual Basic har ikke vært oppdatert siden 2005[?].
Vis hele sitatet...
VB .net er oppdatert. Siste versjon kom i 2017. Du har tilgang på heile .net-miljøet.
Det finnes en del likhetstrekk mellom C# og VB, hovedsakelig siden begge er .NET språk. Men det er over 15 år siden jeg har vært borti VB, så jeg husker svært lite av hvordan språket så ut, og jeg har heller ikke mye erfaring fra C#.

Men det du ønsker å gjøre, ville ha sett noe slikt ut i C#:

Kode

namespace Freak
{
	class Program
   	{
		private IPHostEntry hosts;
	
		public bool ResolveHostname(string hostname)
		{
			this.hosts = Dns.GetHostAddresses();

			if(this.hosts.AddressList.Length > 0)
			{
				return true;
			}
			else
			{
				return false;
			}
		}
	
		public void Main(string[] args)
		{
			string hostname = "freak.no";
	
			if(this.ResolveHostname(hostname) == true)
			{
				Console.WriteLine("[+] Result:");

				foreach(IPAddress address in this.hosts.AddressList)
				{
					Console.WriteLine("[-] " + address);
				}	
			}
			else
			{
				Console.WriteLine("[!] Unable to resolve " + hostname);
			}
		
		}
	}
}
Outputet vil se slik ut:

Kode

[+] Result:
[-] 104.25.34.4
[-] 104.25.35.4
Her returnerer jeg bool datatype fra ResolveHostname() methoden, noe som er mindre korrekt i OOP verden. Egentlig burde man bruke exceptions, men jeg tenkte if-else setninger vil gi mer mening for deg TS, enn throw-catch.

EDIT:

Sitat av vidarlo Vis innlegg
VB .net er oppdatert. Siste versjon kom i 2017. Du har tilgang på heile .net-miljøet.
Vis hele sitatet...
Ja, man lærer noe nytt hver dag. Trodde hele VB språket hadde død ut for mange år siden.
Sist endret av 0xFF; 23. oktober 2017 kl. 14:55.
Sitat av 0xFF Vis innlegg
Ja, man lærer noe nytt hver dag. Trodde hele VB språket hadde død ut for mange år siden.
Vis hele sitatet...
Det er fordi du trolig tenker på det gamle Visual Basic, som for øvrig brukes både for VBA og makrospråk til office den dag i dag. VB.NET er siste generasjonen i dette paradigmet og har naturligvis koblinger mot .NET rammeverket.

Du kan mer eller mindre oppnå det samme i VB.NET som i C#, intermediate language er stort sett likt, og kode i VB.NET (og andre .NET bundede språk) kan refereres til og kjøres fra andre .NET applikasjoner som libraries uten å måtte rekompileres.

Så kritikken bør i så fall pekes i retning av de syntaksmessige forskjellene mellom VB-syntaksen og andre paradigmer, og egentlig avfeies som subjektiv mening om en spesifik form for syntaks.

Jeg skriver i dag ikke i denne syntaksen, men jeg synes likevel det tåpelige hatet mot det kun setter begrensninger for en selv.

Men, for å faktisk svare på hva faktisk TS spør om: programmet ditt kjører en metode som kaster en exception som du ikke behandler og programmet trynet. Du kan unngå at programmet tryner og spytter ut feilmeldingen ved å behandle exception som blir kastet. La oss ta en titt på årsaken til at metoden kaster exception.

Tar vi en titt i dokumentasjonen til rammeverket på nettadressen https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx så finner vi under "remarks":
If the host name could not be found, the SocketException exception is returned with a value of 11001 (Windows Sockets error WSAHOST_NOT_FOUND). This exception can be returned if the DNS server does not respond. This exception can also be returned if the name is not an official host name or alias, or it cannot be found in the database(s) being queried.
Vis hele sitatet...
Ok. Så i korte trekk om DNS oppslaget ikke finnes eller DNS serveren ikke svarer så kan exception bli kastet. Ser man på koden din, så slår du sammen strengene "192.168.0." og ip.Text og sender dette til DNS serveren. Du spør DNS serveren hvilken adresse som peker fra en gitt IP-adresse. Jeg går ut i fra at du ikke har konfigurert opp reverse på DNS serveren din?

Gjør et oppslag mot eksempelvis www.vg.no eller 8.8.8.8 og se om dette unngår exception.
Sist endret av m0b; 23. oktober 2017 kl. 18:25. Grunn: Automatisk sammenslåing med etterfølgende innlegg.