h_addr_list und IP-Adressen die mit 0 anfangen
-
In der hostent-Struktur werden die IP-Adressen so gespeichert, dass es mit einer 0 aufhört. Also lese ich solange IP-Adressen aus der Liste bis ich auf eine 0 stoße. Und zwar nicht auf einen NULL-Zeiger sondern einen Zeiger der auf eine 0 zeigt.
Das verwirrt mich sehr, ist das nicht eine schlechte Lösung? Was wenn eine IP-Adresse mit 0 anfängt? Okay, im Internet wird das eigentlich nicht vorkommen, aber vielleicht im LAN oder so? Also: Wie macht man das mit der h_addr_list richtig, bzw. ist es so richtig?mfg.
-
ich würde an deiner stelle getaddrinfo/getnameinfo benutzen.
-
also ich kenne jetzt die struktur nicht so, aber wie soll eine ip mit 0 anfangen? 0 != '0'
-
DrGreenthumb schrieb:
0 != '0'
Die IP wird Byteweise gespeichert, also nicht als String.
Ja klar, warum sollte sie, aber eigentlich könnte sie ja, deswegen wollte ich fragen wie das gedacht ist bei gethostbyname.
Das mit dem getaddrinfo scheint nicht schlecht zu sein, werde ich mir mal angucken.
mfg.
-
joomoo schrieb:
Ja klar, warum sollte sie, aber eigentlich könnte sie ja
Nein, könnte sie nicht.
-
MFK schrieb:
joomoo schrieb:
Ja klar, warum sollte sie, aber eigentlich könnte sie ja
Nein, könnte sie nicht.
Und in einem LAN?
mfg.
-
ich stelle mir das so vor:
13.24.35.46**\0192.168.0.1\010.10.0.1\0\0**
Keine Ahnung obs wirklich so ist.
-
Joomoo, bist du denn sicher, dass nur das erste Byte 0 ist?
-
Mir ist gerade etwas aufgefallen: Ich hab mich die ganze Zeit geirrt! Man kriegt eine Liste aus Zeiger, die auch auf Zeiger zeigen. Und solbald ein Zeiger auf einen Nullzeiger zeigt, ist es zu Ende, also nicht wenn ein Zeiger auf einen Zeiger zeigt, der auf eine 0 zeigt. Also geht es doch mit der 0 am Anfang. Aber warum macht man einen Zeiger auf einen Zeiger? Das ist doch total sinnlos, warum nicht gleich einen Zeiger?
mfg.
-
joomoo schrieb:
Mir ist gerade etwas aufgefallen: Ich hab mich die ganze Zeit geirrt! Man kriegt eine Liste aus Zeiger, die auch auf Zeiger zeigen. Und solbald ein Zeiger auf einen Nullzeiger zeigt, ist es zu Ende, also nicht wenn ein Zeiger auf einen Zeiger zeigt, der auf eine 0 zeigt. Also geht es doch mit der 0 am Anfang. Aber warum macht man einen Zeiger auf einen Zeiger? Das ist doch total sinnlos, warum nicht gleich einen Zeiger?
mfg.
redest du jetzt von getaddrinfo?
-
hmmmmmmmm? schrieb:
joomoo schrieb:
Mir ist gerade etwas aufgefallen: Ich hab mich die ganze Zeit geirrt! Man kriegt eine Liste aus Zeiger, die auch auf Zeiger zeigen. Und solbald ein Zeiger auf einen Nullzeiger zeigt, ist es zu Ende, also nicht wenn ein Zeiger auf einen Zeiger zeigt, der auf eine 0 zeigt. Also geht es doch mit der 0 am Anfang. Aber warum macht man einen Zeiger auf einen Zeiger? Das ist doch total sinnlos, warum nicht gleich einen Zeiger?
mfg.
redest du jetzt von getaddrinfo?
ne, von gethostbyname und von der hostent struktur.
mfg.
-
joomoo schrieb:
solbald ein Zeiger auf einen Nullzeiger zeigt, ist es zu Ende, also nicht wenn ein Zeiger auf einen Zeiger zeigt, der auf eine 0 zeigt.
hmm... Ich würde meinen, ein Zeiger der auf einen Nullzeiger zeigt, _ist_ ein Zeiger, der auf einen Zeiger zeigt, der auf eine Null zeigt
Keine Ahnung wohin Deine Zeiger jetzt zeigen, aber ein Zeiger auf einen Zeiger entspricht einem Array von Arrays, also nem 2-dimensionalen Array. Also prinzipiell char ip[x][y], außer das die Elemente vom ersten Array nicht zwingend auf ein Array zeigen müssen sondern auch 0 sein können, also nirgendwo hinzeigen.
-
DrGreenthumb schrieb:
joomoo schrieb:
solbald ein Zeiger auf einen Nullzeiger zeigt, ist es zu Ende, also nicht wenn ein Zeiger auf einen Zeiger zeigt, der auf eine 0 zeigt.
hmm... Ich würde meinen, ein Zeiger der auf einen Nullzeiger zeigt, _ist_ ein Zeiger, der auf einen Zeiger zeigt, der auf eine Null zeigt
Aber ein Zeiger, der auf eine 0 zeigt, ist ja kein Nullzeiger. Man muss dazu sagen, dass ich einen char* Zeiger meine. Also ein Nullzeiger ist dann, wenn der zeiger auf die Speicheradresse 0 zeigt. Ein Zeiger der auf 0 zeigt, ist also ein Zeiger der auf einen Byte, der alle Bits auf 0 hat, zeigt. Also ist es doch nicht das gleiche?
mfg.