Zum Inhalt springen

Speicherzugriffsfehler - gethostbyaddr


Empfohlene Beiträge

Geschrieben

Hallo,

wenn ich einen Wert der Structur hostent ausgeben will funktioniert es einfach nicht und ich finde meinen Fehler imo nicht.

Vllt . könnt ihr weiterhelfen:


int myfunc(int int_socketc, struct sockaddr_in *str_socketc)

{

 	unsigned long int lon_hostip;

   	struct hostent *str_host;


        lon_hostip = inet_Addr(inet_ntoa(str_socketc->sin_addr));

        str_host = gethostbyaddr ((char *)&lonhostip, sizeof(lon_hostip), AF_INET);

        if ( str_host = NULL)

       { fprintf (stderr, "blablabla"); }


       fprintf (stderr, "%s", str_host->h_name); 

}

wenn das programm auf die fprintzeile läuft in der ich den hostnamen ausgeben will (die letzte zeile), dann bringt er mir immer einen speicherzugriffsfehler ... :beagolisc :beagolisc

Der Zeiger str_socketc zeigt auf die richtige Struktur, da hier auch die IP drinsteht von der an die Socketverbindung connectiert wurde...

Nur wenn ich den h_name ausgeben will bringt er mir einen Speicherzugriffsfehler... kann mir mal jemand helfen?

Geschrieben

if ( str_host = NULL)

Das ist eine Zuweisung, kein Vergleich. Du setzt hier str_host auf NULL. Dieser Ausdruck wird wiederum immer als false ausgewertet, daher wird der if-Block niemals betreten. In der nachfolgenden Anweisung greifst du dann über einen Nullzeiger auf einen Member zu.

Vergleich ist ==.

Geschrieben
Das ist eine Zuweisung, kein Vergleich. Du setzt hier str_host auf NULL. Dieser Ausdruck wird wiederum immer als false ausgewertet, daher wird der if-Block niemals betreten. In der nachfolgenden Anweisung greifst du dann über einen Nullzeiger auf einen Member zu.

Vergleich ist ==.

*args* man ich hasse solche tippfehler - und das dumme daran ist man sieht sich nicht selbst :rolleyes:

Naja nach der Mittagspause läufts sowieso besser ;)

man dankt :e@sy

Geschrieben
Wenn dir sowas öfters passiert dann dreh den Vergleich einfach um.

Wenn du es so machst:


if (NULL == str_host)
[/PHP]

und dann nur ein = tippst dann bekommst du vom Compiler eine Fehlermeldung weil du NULL ja nichts zuweisen kannst.

hey,

super Tipp danke :)

Hier wird einen echt schnell und zuverlässig geholfen... werde es ab jetzt immer umdrehen :)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...