Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » sockets: adresse in string mit inet_ntop

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.01.2009, 12:34 Uhr
~boski
Gast


hi,

hab ein recvfrom() auf dem ich daten von einem socket bekomme, dort bekomme ich auch eine gefüllte SOCKADDR struktur von dem client der sich daran verbunden hat.

nun möchte ich gern prüfen ob ein client eine bestimmte ip hat bzw. sicherstellen das manche ip's nicht verarbeitet werden. weswegen ich z.b. vergleich möchte ist ip = localhost?


hab das zuerst mit

C++:
in_adr.sin_addr.s_addr == "127.0.0.1"



versucht.....passiert gar nix. hab dann di funktion inet_ntop gefunden, die mir einen adresse in einen string umwandelt, allerdings ibn ich zu blöd dafür di richtig aufzurufen, ich bekomme ständig ein "Segmentation fault" wenn die anweisung ausgeführt wird.


C++:
char test[64];
inet_ntop(AF_INET, in_adr.sin_addr.s_addr, test, sizeof(test));



kann mir wer sagen was ich falsch mache ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.01.2009, 14:01 Uhr
0xdeadbeef
Gott
(Operator)


Mir ist dein SOCKADDR-Struct nicht bekannt; das sockaddr-Struct aus sys/socket.h jedenfalls hat keinen Member sin_addr. Unter der Annahme, dass es sich bei in_adr.sin_addr um ein struct in_addr handelt:

C++:
if(inet_aton("127.0.0.1", &in_adr.sin_addr)) {
  // Gültige Adresse, gespeichert in in_adr.sin_addr.s_addr
}


Bei einer zur Compilezeit bekannten Adresse kannst du das natürlich auch von Hand zusammensetzen:

C++:
in_adr.sin_addr.s_addr = (127 << 24) | (0 << 16) | (0 << 8) | 1;


...in diesem speziellen Fall können die (0 << x)-Teile natürlich entfallen, ich hab sie hier nur eingesetzt, um das Prinzip zu verdeutlichen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.01.2009, 13:03 Uhr
~emokind
Gast


öhm if (strstr(ip, "blabal") != 0)
oder if (strcmp(....)

oder verstehe ich jetzt was falsch?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.01.2009, 18:58 Uhr
0xdeadbeef
Gott
(Operator)


Es geht darum, den IP-String, den ein Benutzer eingeben könnte, in eine IP-Adresse zu parsen, wie sie ein Computer versteht (also einen vorzeichenlosen 32bit-Integer).
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: