Unikeko Skrevet 16. august 2008 Del Skrevet 16. august 2008 Hei Har bruk for en liten console app, men med min heller begrensede programmerings kunnskap håper jeg noen andre her kunne hjelpe meg litt Det jeg trenger er en console app rett og slett viser IP adressen til den tilkoblingen jeg skriver. Eksempel i cmd: c:\> getip "local area connection 1" 192.168.0.1 Har funnet noen slike på nettet, men alle skriver mye mere ( Your IP etc) mens jeg trenger kun IP da jeg skal bruke "output" til noe annet. Håper noen kan hjelpe meg litt med dette Fint om du/dere tar med koden også så jeg kan lære litt. Uni Lenke til kommentar
GeirGrusom Skrevet 16. august 2008 Del Skrevet 16. august 2008 Du kan bruke ipconfig for å få vite dette. Hvis du derimot kun er interessert i å vite IP addressen, kan det enkleste være å lese input fra ipconfig og bruke regex for å kun hente ut IP addressen. Lenke til kommentar
Unikeko Skrevet 16. august 2008 Forfatter Del Skrevet 16. august 2008 Du kan bruke ipconfig for å få vite dette. Hvis du derimot kun er interessert i å vite IP addressen, kan det enkleste være å lese input fra ipconfig og bruke regex for å kun hente ut IP addressen. Trenger bare IP ja. ipconfig gir mye mer en jeg trenger, og regex har jeg egentlig ingen peiling på... Håpte noen ville være hyggelig å lage et slikt program for meg grunnen til at jeg trenger det akkurat slik er at det skal brukes i et lite script jeg lager som skal vise IP til en spesifikk tilkobling. Lenke til kommentar
BlueEAGLE Skrevet 16. august 2008 Del Skrevet 16. august 2008 Dette finner vi lett i navneområdet System.Net.NetworkInformation. Det gjelder bare å vite hvor og hvordan man skal lete. Kort fortalt så må du: A) Hente alle nettverksenhetene B) Sammenlikne enhetsnavnet (NetworkInterface.Name) med den enheten du er interessert i. C) Hente IP-eiendelene til enheten D) Hente samlingen med unicast-adresser til enheten (det er unicast vi normalt kaller IP-adressen) E) Skrive ut adressen(e). Husk at en enhet kan ha flere adresser. kodemessig så blir det seende ca. slik ut: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.NetworkInformation; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { bool treff = false; //Først sjekker vi om vi har fått sendt parametere. if (args.Length >= 1) { //Så henter vi alle adapterene NetworkInterface[] adaptere = NetworkInterface.GetAllNetworkInterfaces(); foreach (NetworkInterface adapter in adaptere) { //Vi sjekker om dette adapteret er det vi er ute etter if (adapter.Name == args[0]) { //Vi setter flagget slik at vi vet at vi traff enheten treff = true; //Vi trenger egenskapene til ip-enheten. IPInterfaceProperties ip_prop = adapter.GetIPProperties(); //Det er unicast adressen(e) vi er interessert i UnicastIPAddressInformationCollection uniCast = ip_prop.UnicastAddresses; foreach (UnicastIPAddressInformation uni in uniCast) { //og skriver dem ut til konsollen. Console.WriteLine(uni.Address); } } } if (treff == false) { Console.WriteLine("Fant ikke enheten '{0}'", args[0]); } } else { Console.WriteLine("Du må spesifisere en enhet."); } } } } Lenke til kommentar
Unikeko Skrevet 16. august 2008 Forfatter Del Skrevet 16. august 2008 Takk! akkurat det jeg trengte. Du har vert til stor hjelp. Lenke til kommentar
BlueEAGLE Skrevet 16. august 2008 Del Skrevet 16. august 2008 Takk! akkurat det jeg trengte. Du har vert til stor hjelp. Leste du igjennom koden før du kompilerte og kjørte den? Lenke til kommentar
Unikeko Skrevet 16. august 2008 Forfatter Del Skrevet 16. august 2008 Takk! akkurat det jeg trengte. Du har vert til stor hjelp. Leste du igjennom koden før du kompilerte og kjørte den? Har sett litt på det. Skal studere mer litt senere i kveld. Lenke til kommentar
Manfred Skrevet 16. august 2008 Del Skrevet 16. august 2008 Jeg har ikke helt skjønt hvorfor endel gjør dette: UnicastIPAddressInformationCollection uniCast = ip_prop.UnicastAddresses; foreach (UnicastIPAddressInformation uni in uniCast) ... I stedet for bare dette: foreach (UnicastIPAddressInformation uni in ip_prop.UnicastAddresses) Når du ikke skal bruke den senere, utenfor scopet, er det jo ikke noe poeng å ha to klin like instanser. Lenke til kommentar
BlueEAGLE Skrevet 16. august 2008 Del Skrevet 16. august 2008 Jeg har ikke helt skjønt hvorfor endel gjør dette: UnicastIPAddressInformationCollection uniCast = ip_prop.UnicastAddresses; foreach (UnicastIPAddressInformation uni in uniCast) ... I stedet for bare dette: foreach (UnicastIPAddressInformation uni in ip_prop.UnicastAddresses) Når du ikke skal bruke den senere, utenfor scopet, er det jo ikke noe poeng å ha to klin like instanser. Det kalles skoleeksempel. Man viser hvilken type de forskjellige tingene har slik at de som leser koden kan lese mer om disse typene i dokumentasjonen. Lenke til kommentar
Glenn F. Henriksen Skrevet 18. august 2008 Del Skrevet 18. august 2008 Jeg har ikke helt skjønt hvorfor endel gjør dette: UnicastIPAddressInformationCollection uniCast = ip_prop.UnicastAddresses;<BR>foreach (UnicastIPAddressInformation uni in uniCast)... I stedet for bare dette: foreach (UnicastIPAddressInformation uni in ip_prop.UnicastAddresses) Når du ikke skal bruke den senere, utenfor scopet, er det jo ikke noe poeng å ha to klin like instanser. Det er ingen praktisk forskjell etter kompilering. Hvis du ikke bruker den variabelen utenfor fornext løkken vil kompilatoren optimalisere den vekk. De to måtene produserer altså identisk IL tilsvarende det andre eksempelet ditt. Det er igrunnen et spørsmål som stil og personlige preferanser. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå