Skriva ut datorns IP (Cocoa)

Tråden skapades och har fått 15 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Örebro
  • 2006-12-28 21:11

Hej!

Jag har börjat jobba med xcode och cocoa en del på sista tiden. Nu försöker jag skapa ett program som visar användarens ip-adress. Är det någon som vet hur man bär sig åt för att göra detta? Finns det något NS-objekt som gör det lite enkelt?

Tack på förhand!

Prova med det här:

NSString *ip = [[NSHost currentHost] address];
  • Medlem
  • Örebro
  • 2006-12-28 21:38

Det såg ju vettigt ut men jag får ett konstigt resultat: fe80::217:f2ff:fe2f:7e5b%en0 . Är det bara en väldigt knepigt formaterad adress eller är det helt åt skogen?

  • Medlem
  • Växjö
  • 2006-12-28 21:43

Det ser ut som en IPv6-adress, varför du får det istället för IPv4 kan jag inte svara på.

  • Medlem
  • Örebro
  • 2006-12-28 21:44

Bam!

Jag ändrade adress till adresses så jag fick alla möjigga resultat, inkl det jag var ute efter.
Tack för hjälpen!

  • Medlem
  • Örebro
  • 2006-12-28 22:03

Jaha, nehe... Just det jag ville åt var inte alls med i listan. Det jag vill åt är något som kallas "inet".
Man kan få fram det i terminalen om man skriver

ifconfig en1 |grep "inet " | cut -c 7-99

Det första numret som står där är det jag vill komma åt.
Även ett annat värde som man får genom att sktiva

dig | grep "("

i Terminalen.

Någon som vet var man ska börja leta?

  • Medlem
  • Simrishamn
  • 2006-12-29 00:44

Jag får fram det genom:

[[[NSHost currentHost] addresses] objectAtIndex:1]; 

iaf...
Och det andra värdet är väl bara objectAtIndex:2 istället?

  • Medlem
  • Örebro
  • 2006-12-29 01:48

Hmm ja jag hittade inet-numret där. Men det andra hittar jag ingenstans. Det är ipnummret till namnservern. Verkar inte gå att få tag på den genom NSHost ö.h.t.

  • Medlem
  • Simrishamn
  • 2006-12-29 01:59
  • Medlem
  • Örebro
  • 2006-12-29 02:11

carbon alltså. hur blir det när jag pular i cocoa. går det att blanda koden eller hur ska man bära sig åt?

Det är via NSHost du får ut adressen.

Prova detta, en av adresserna den skriver ut skall vara ditt riktigt ip. Eller iaf ditt interna, routerns får man inte ut.

NSEnumerator *addresses = [[[NSHost currentHost] addresses] objectEnumerator];
NSString *address;
while (address = [addresses nextObject])
	NSLog(@"%@", address);
  • Medlem
  • Örebro
  • 2006-12-29 20:25
Ursprungligen av Fredrik Sigbjörn:

Det är via NSHost du får ut adressen.

Det är inte ip-adressen till min dator jag vill åt utan ip-adressen till namnservern jag är ansluten till via min operatör. Jag kan inte hitta den adressen någonstans i datan som "NSHost currentHost addresses" ger mig.

  • Medlem
  • Simrishamn
  • 2006-12-29 14:52

oskob, ja, eftersom all C är korrekt ObjC kan du kalla Carbon-funktioner från ditt cocoa-program. Glöm inte att inkludera rätt headers bara.

Fredrik: annars har NSArray en rätt schysst -description

  • Medlem
  • Simrishamn
  • 2006-12-29 14:55

Ett trevligt sätt att utforska Cocoa är F-Script. Då kan du skapa objekt och skicka meddelanden utan att behöva kompilera. Man skriver då med smalltalk-syntax. För att skriva ut alla adresser som -addresses returnerar skriver man alltså:

(NSHost currentHost) addresses

Nedladdning och mer info här: http://www.fscript.org/

  • Oregistrerad
  • 2006-12-29 18:08

System Configuration Framework är din vän. Där kan du se alla möjliga intressanta saker. Bland annat samtliga IP-adresser du har på systemet.

  • Medlem
  • Stockholm
  • 2006-12-31 19:15

Ett alternativ är annars:

Citat:

NSString *ip = [[[NSString alloc] initWithData:[[NSURL URLWithString:@"http://www.whatismyip.org/"] resourceDataUsingCache:NO] encoding:NSASCIIStringEncoding] autorelease];

/Cypher

1
Bevaka tråden