sockaddr_in in int oder string



  • Moin,

    gib da vielleicht ne Funktion die mir die IP adresse in einen string umwandelt..

    ich brauch eigentlich nur das letzte byte der adresse
    ich möchte es als identifizierung meiner clienten verwenden.

    danke



  • Die sockaddr_in Struktur hat den Member sin_addr, in dem die IP-Adresse steht (als union, so daß du sie entweder als 4 char, 2 short oder einen long auslesen kannst):

    sockaddr_in addr;
    unsigned char ip_last = addr.sin_addr.S_un_b.s_b4;
    


  • also

    unsigned char ip_last = sinRemote.sin_addr.S_un.S_un_b.s_b1;
    	cout<< ip_last<< endl;
    

    funktioniert nicht (er zeigt nichts an)

    aber

    unsigned int ip_last = sinRemote.sin_addr.S_un.S_un_b.s_b1;
    cout<< ip_last<< endl;
    

    funktioniert!



  • Ändere mal die Ausgabe im ersten Fall in cout<<(int)ip_last<<endl; um - char-Variablen werden von cout als ASCII-Zeichen aufgefasst, wenn du den Zahlenwert dahinter verwenden willst, mußt du ihn nach int casten.



  • individuum schrieb:

    Moin,

    gib da vielleicht ne Funktion die mir die IP adresse in einen string umwandelt..

    ich brauch eigentlich nur das letzte byte der adresse
    ich möchte es als identifizierung meiner clienten verwenden.

    danke

    Die Funktion heißt inet_ntop.

    Tntnet


Anmelden zum Antworten