Zum Inhalt springen

Speicherzugriffsfehler - gethostbyaddr


sayso

Empfohlene Beiträge

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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