Wie zu entscheiden, ob zwei IP im selben Subnetz sind oder nicht? Der einzige Eingang ist die IP-Adresse und die Subnetzmaske! Was ist der optimale Weg, um mit C/C++ zu berechnen, ob zwei IP das gleiche Subnetz haben?Vergleichen Sie zwei IP-Subnetz
Antwort
bool checkForSubnetEquality(in_addr_t ipA, in_addr_t ipB, uint32_t subnetMask) {
return (ipA & subnetMask) == (ipB & subnetMask);
}
Ich bitte Sie, bitte fügen Sie weitere Kontext um Ihre Antwort hinzu. Code-Only- oder Link-Only-Antworten sind schwer zu verstehen. Es wird sowohl dem Fragesteller als auch zukünftigen Lesern helfen, wenn Sie in Ihrem Beitrag weitere Informationen hinzufügen können. – RBT
typedef unsigned char BYTE;
Bool CheckForSubnetParity(
BYTE[] _In_ iPAddress1,
BYTE[] _In_ iPAddress2,
BYTE[] _In_ subNetMask
) {
BYTE[] NetworkPrefix1 = new BYTE[4];
BYTE[] NetWorkPrefix2 = new BYTE[4];
Bool Result = true;
for (int x = 0; x < 4; x++)
{
NetworkPrefix1[x] = iPAddress1[x] && subNetMask[x];
NetworkPrefix2[x] = iPAddress2[x] && subNetMask[x];
if (NetworkPrefix1[x] != NetworkPrefix2[x])
{
Result = false;
}
}
return Result;
}
Zuweisung von Speicher für diese Aufgabe ist absolut unnötig! Und ich denke '! =' Hat höhere Priorität als '^', also scheint das sogar falsch zu sein – user45891
Sie haben absolut Recht, der '=' Operator ist viel kürzer Ausdruck für das gleiche Ding. Ich wurde in so einem engen Fokus gefangen, dass ich komplett vermisse, wie man Gleichheit benutzt ... –
Aber ich mag es, mit 'BYTE' Arrays zu arbeiten, im Gegensatz zu größeren Typen. –
Sie können ‚xor‘ Betrieb gelten sowohl für IP-Adressen ihrer Maske und vergleichen sie danach. Wenn sie identisch sind, dann beide IP-Adressen im selben Subnetz.
die am 172.16.2.4/255.255.0.0 und 172.16.1.69/255.255.0.0 Nach ‚xor‘ aussehen Lassen Sie erhalten ‚172.16.0.0‘ für beide Adressen, so dass sie im selben Subnetz.
Grüße.
- 1. Vergleichen Sie zwei SDL_point?
- 2. Vergleichen Sie zwei Hashsets?
- 3. Vergleichen Sie zwei Verzeichnisbäume
- 4. Vergleichen Sie zwei json
- 5. Vergleichen Sie zwei NSDates
- 6. Vergleichen Sie zwei IEnumerable
- 7. Vergleichen Sie zwei Objekte nach zwei Kriterien
- 8. Vergleichen Sie zwei Strings gleich
- 9. Linux Vergleichen Sie zwei Textdateien
- 10. Vergleichen Sie zwei SQL-Datenbanken
- 11. Vergleichen Sie zwei Strings Arrays
- 12. Vergleichen Sie zwei Steuerungen miteinander
- 13. Vergleichen Sie zwei IQueryable Instanzen
- 14. Wie vergleichen Sie zwei Spalten
- 15. Vergleichen Sie zwei Bereiche VBA
- 16. Vergleichen Sie zwei 3D-Vektoren
- 17. Vergleichen Sie zwei komplexe Listenobjekte
- 18. .Net Vergleichen Sie zwei Datentabellen
- 19. Vergleichen Sie zwei Namensstring php
- 20. Vergleichen Sie zwei verschiedene Listen
- 21. Vergleichen Sie zwei Dropdown-Werte
- 22. Vergleichen Sie zwei Array-Elemente
- 23. Vergleichen Sie zwei Dateien (Verständnis)
- 24. Vergleichen Sie zwei Tage, in PHP vergleichen, nicht richtig
- 25. Vergleichen Sie zwei Datumsfelder in MongoDB
- 26. Vergleichen Sie zwei XML-Strings Element, um
- 27. Vergleichen Sie zwei Ordnerinhalt mit C#
- 28. Vergleichen Sie zwei Textdateien mit Linq?
- 29. Mysql Vergleichen Sie zwei Datetime-Felder
- 30. Iterate durch zwei Spalten und vergleichen sie
Sind Sie in einer Prüfung? – rekire
Übernehmen Sie die Maske auf die IP-Adresse und sehen Sie, ob sie identisch sind? – AntonH
danke marschall! Dann meinst du, xor Ergebnis zwischen zwei ip oder _xor_ zwischen den beiden Netzwerk zu berechnen (ip _and_ subnet) – HLM