Wie kann ich feststellen, ob ein Netzwerkadapter angeschlossen ist? Ich kann nur Beispiele für die Verwendung von NSReachability finden, um eine Internetverbindung zu erkennen, aber ich möchte auch eine Nicht-Internet-Netzwerkverbindung erkennen. Die IP-Adresse auf eth0 sollte funktionieren? Ich arbeite nur am Mac.Erkennen eines verbundenen Netzwerks
Antwort
Getting a List of All IP Addresses in Technical Note TN1145 Apple für das Erhalten des Status der Netzwerkschnittstellen 3 Methoden erwähnt:
- Systemkonfiguration Rahmen
- Open Transport API
- BSD-Sockets
Systemkonfiguration Framework: Dies ist Apples empfohlene Methode, und es gibt Beispielcode in der TN1145. Der Vorteil besteht darin, dass es eine Möglichkeit bietet, über Änderungen in der Schnittstellenkonfiguration benachrichtigt zu werden.
Open Transport API: Es gibt auch Beispielcode in TN1145, sonst kann ich nicht viel dazu sagen. (Es gibt nur „Legacy“ Dokumentation auf der Apple-Website.)
BSD-Sockets: Dies scheint der einfachste Weg, um die Liste der Schnittstellen zu bekommen und den Verbindungsstatus zu bestimmen (wenn Sie nicht dynamisch brauchen Benachrichtigungen ändern).
Der folgende Code zeigt, wie Sie alle IPv4- und IPv6-Schnittstellen finden, die "betriebsbereit" sind.
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <ifaddrs.h>
#include <net/if.h>
#include <netdb.h>
struct ifaddrs *allInterfaces;
// Get list of all interfaces on the local machine:
if (getifaddrs(&allInterfaces) == 0) {
struct ifaddrs *interface;
// For each interface ...
for (interface = allInterfaces; interface != NULL; interface = interface->ifa_next) {
unsigned int flags = interface->ifa_flags;
struct sockaddr *addr = interface->ifa_addr;
// Check for running IPv4, IPv6 interfaces. Skip the loopback interface.
if ((flags & (IFF_UP|IFF_RUNNING|IFF_LOOPBACK)) == (IFF_UP|IFF_RUNNING)) {
if (addr->sa_family == AF_INET || addr->sa_family == AF_INET6) {
// Convert interface address to a human readable string:
char host[NI_MAXHOST];
getnameinfo(addr, addr->sa_len, host, sizeof(host), NULL, 0, NI_NUMERICHOST);
printf("interface:%s, address:%s\n", interface->ifa_name, host);
}
}
}
freeifaddrs(allInterfaces);
}
Vielen Dank, beste Antwort bisher.Ich habe keine Zeit, es jetzt zu versuchen, aber wenn in den kommenden 6 Stunden nicht etwas besser wird, werde ich es akzeptieren. –
@ AndreasBergström: Das ist OK. Ich bin froh, wenn es geholfen hat. –
Reachability
(Ich nehme an, Sie meinten, Apple Demo-Klasse basierend auf der zugrunde liegenden SCNetworkReachability...
API) funktioniert für jeden IP-verbundenen Host, einschließlich in Ihrem lokalen Netzwerk. Sie können die reachabilityForLocalWiFi
Methode verwenden, obwohl laut this page YES zurückgegeben wird, wenn das Netzwerk aktiv, aber nicht routingfähig ist. Sie möchten vielleicht lieber reachabilityWithAddress:
mit einer lokalen Adresse abfragen.
This ist ein Drop-In-Ersatz für Reachability
, dass einige Leute empfehlen.
Sie können den von Apple bereitgestellten Erreichbarkeitscode verwenden. Hier ist die link, wo Sie den "Erreichbarkeit" Quellcode erhalten können:
Sie können auch diese Datei herunterladen: TestWifi in Github. Es zeigt Ihnen, wie Sie die Erreichbarkeitsklasse implementieren.
Hoffe, das könnte Ihnen helfen.
Der Erreichbarkeitslink, den Sie angegeben haben, ist für iOS. –
- 1. Erstellen eines hierarchischen Netzwerks
- 2. Python: Kantenlängenverteilung eines regulären Netzwerks
- 3. Konstruieren Sie die Adjazenzmatrix eines regulären Netzwerks
- 4. Erstellen eines lokalen CDMA- oder GSM-Netzwerks?
- 5. Implementierung eines bidirektionalen LSTM-CRF-Netzwerks
- 6. Feinabstimmung eines tiefen neuronalen Netzwerks in Tensorflow
- 7. Gewichtsoptimierung eines neuronalen Netzwerks mit Hilfe eines genetischen Algorithmus
- 8. Disconnect und Reconnect eines verbundenen Datagramm Sockets
- 9. Den Namen eines verbundenen Bildschirms erhalten Swift
- 10. Wie erhalten Sie den Ladezustand eines verbundenen iPhone vom Mac?
- 11. Neurolab Umschulung des Netzwerks
- 12. Wie kann die Reaktionszeit eines Netzwerks gemessen werden?
- 13. Python: Wie visualisiert man den Minimum Spanning Tree eines Netzwerks?
- 14. Welche Schichten sollten beim Training eines Neuronalen Netzwerks "Dropout" erfahren?
- 15. Implementieren eines neuronalen Netzwerks in Java: Training und Backpropagation Probleme
- 16. Neo4j vs ArangoDB beim Modellieren eines sozialen Netzwerks
- 17. Wie wäre es mit der Approximationsfähigkeit eines konvolutionellen neuronalen Netzwerks?
- 18. Entwicklung eines sozialen Netzwerks: Tipps, Details und Informationen
- 19. Wie misst man die Lernleistung eines neuronalen Netzwerks?
- 20. Erkennen eines ganzzahligen Überlaufs
- 21. erkennen Sichtbarkeitsstatus eines Elements
- 22. Steuerelemente eines Winforms erkennen
- 23. damit verbundenen
- 24. Caching-System außerhalb des Netzwerks
- 25. Erkennen eines Inline-/Blocktyps eines DOM-Elements
- 26. Erkennen Anwesenheit eines beliebigen Mitglied
- 27. Erkennen eines Timeout in ffmpeg
- 28. Erkennen eines Symlinks in Java
- 29. Erkennen eines Hyperlinks von jquery
- 30. Erkennen eines Musters mit OpenCV
Arbeiten Sie auf iOS, Mac oder beiden? – Bryan
Nur Mac, danke. –
OK, ich habe es nur auf dem iPhone versucht, daher funktioniert meine Antwort möglicherweise nicht auf dem Mac. Ich werde sehen, ob ich noch mehr recherchieren kann. – Bryan