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 :)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...