habe da eine kleine Frage, die ich leider mittels Google bisher nicht lösen konnte.
Ich möchte in Xcode ein kleines Programm schreiben und muss dazu die Netzwerkschnittstellen (LAN, WLAN, etc) auslesen und danach diese einzeln wieder ansprechen können.
Wie kann ich das am einfachsten in Xcode erreichen?
am einfachsten greifst du auf die Shell zurück und da würde sich doch der Befehl ‘ifconfig’ anbieten.
Aber es gibt natürlich noch zig weitere Möglichkeiten:
z.B.:
struct ifaddrs *ifap;
getifaddrs(&ifap;);
// durch ifap iterieren, sofern kein Null Pointer…und den Rückgabewert von getifaddrs sollte auch noch geprüft werden
freeifaddrs(ifap);
Oder plattformunabhängig mit Java z.B:
import java.net.NetworkInterface;
// …
Enumeration enum = NetworkInterface.getNetworkInterfaces();
while (enum.hasMoreElements()) {
NetworkInterface ni = (NetworkInterface)enum.nextElement();
Enumeration inetEnum = ni.getInetAddresses();
}
Oder du benutzt das IOKit: http://developer.apple.com/documentation/devicedrivers/conceptual/IOKitFundamentals/Introduction/Introduction.html (IOEthernetInterface.h <- Header File anschauen)
Damit das aber jetzt keine endlos lange Liste wird, frage ich lieber nach, was genau mit den Netzwerkschnittstellen passieren soll? Und mit welcher Programmiersprache überhaupt?
ich möchte das Programm in Xcode in Objective-C schreiben.
Das Programm soll nur oberflächlich die Schnittstellen auslesen, damit ich dann nacher über die in einer ComboBox ausgewählte ausgelesen Schnittstelle zum Beispiel einen Download starten kann. Also wähle ich zum Beispiel “eth0” oder so aus und wenn ich dann auf einen Button klicke, dann startet der eben z.B. einen Download über diese Schnittstelle.
Daher möchte ich die Schnittstellen so auslesen, dass ich sie gleich in einer ComboBox anzeigen lassen kann.
Gruß comfreak
(Bearbeitet am 04. August 2009 um 23:04 Uhr von comfreak)
^^ diese Funktion gibt ein veränderbares Wörterbuch mit Informationen zu allen Netzwerkschnittstellen zurück (oder Null). Am besten iterierst du über dieses Wörterbuch und gibst ein Paar Nachrichten auf der Konsole aus, um zu erfahren, wass denn da alles für Schlüssel und Werte drin sind. Eventuell muss das Wörterbuch noch in einen Array umgewandelt werden, damit es auf das Auswahlfeld gebunden werden kann.
vielen Dank, werde es gleich testen.
Dazu noch eine kleine Frage: Gibt dieser Code dann nur die Ethernet Schnittstellen aus oder nennt sich die Funktion einfach nur so?
Möchte nämlich sämtliche Netzwerkschnittstellen auflisten (so wie auch in den Systemeinstellungen)..
Von comfreak • Mittwoch, 05. August 2009, 06:43 UhrGibt dieser Code dann nur die Ethernet Schnittstellen aus oder nennt sich die Funktion einfach nur so?
Die Funktion gibt die Ethernet Schnittstellen aus.
Für alle Netzwerkschnittstellen:
IOServiceMatching(kIONetworkInterfaceClass)
(die wollte ich eigentlich auch, aber der Morgen bekämpft mich zuweilen)
Von hirnstroem • Mittwoch, 05. August 2009, 05:24 Uhrdiese Funktion gibt ein veränderbares Wörterbuch mit Informationen zu allen Netzwerkschnittstellen zurück (oder Null). [..] Eventuell muss das Wörterbuch noch in einen Array umgewandelt werden, damit es auf das Auswahlfeld gebunden werden kann.
Und wie kann ich das umwandeln?
Arbeite erst seit kurzem mit Objective-C und hab mich bisher noch nicht mit dem umwandeln von Datentypen beschäftigt..
Entweder über Schlüssel oder Werte iterieren, und bei jedem Durchgang das aktuelle Objekt in einen zuvor erstelltes Array (MutableArray) legen.
Oder per “CFDictionaryGetKeysAndValues” die Schlüssel und Werte in ein separates Array schreiben.
Und - da führt kein Weg dran vorbei - ganz viel Dokumentation lesen, z.B.: http://developer.apple.com/documentation/CoreFoundation/Reference/CoreFoundation_Collection/index.html#//apple_ref/doc/uid/TP40003849
Ok, das werde ich bei Gelegenheit machen.
Nun noch eine anschießende Frage: Wie kann ich dann eine Schnittstelle ansprechen, die ich vorher manuell angegeben habe?
Ich möchte über diese Schnittstelle einen Server kontaktieren und dann den Output in einer Datei speichern (was beim Download einer Datei ja die Datei wäre oder z.B. eine html-Seite).
Oder gäbe es da auch eine einfachere Möglichkeit?
Vielen Dank,
Gruß comfreak
Anmelden um neue Antworten zu verfassen
Allegra Leser! Nur angemeldete Nutzer können bei diesem Beitrag Antworten hinterlassen. Jetzt kostenlos registrieren oder mit bestehendem Benutzerprofil anmelden.
Ab CHF 5.– im Monat
👉🏼 Wir benötigen deine Unterstützung! Unterstütze macprime mit einem freiwilligen Gönner-Abo und mache die Zukunft unseres unabhängigen Apple-Mediums aus der Schweiz mit möglich.
macprime unterstützen
macprime ForumXcode: Netzwerkschnittstellen auslesen und einzeln ansprechen
VonAntwort von comfreak
Publireportage für CHF 420.– Werbung auf macprime
sierra2
comfreak
hirnstroem
comfreak
(Bearbeitet am 04. August 2009 um 23:04 Uhr von comfreak)
hirnstroem
comfreak
hirnstroem
comfreak
hirnstroem
comfreak
Anmelden um neue Antworten zu verfassen
Allegra Leser! Nur angemeldete Nutzer können bei diesem Beitrag Antworten hinterlassen. Jetzt kostenlos registrieren oder mit bestehendem Benutzerprofil anmelden.