Namespace oder Klasse von Socket?



  • Hallo,

    haben die Sockets unter Linux und c++ einen namespace oder eine Klasse, mit der ich deren Funktionen direkt aufrufen kann? Angenommen ich verwende in meiner eigenen Klasse ebenfalls die Funktion connect, wie rufe ich dann innerhalb dieser Klasse die Funktion connect eines Sockets auf?
    Wie würde das selbe mit der uClib funktionieren ?

    PS: wieso benötige ich eigentlich Root-Rechte unter Ubuntu, wenn ich eine Socketverbindung aufbauen möchte?

    Gruß und Danke



  • Wenn Du in Deiner Klasse eine Methode "connect" hast, und du möchtest die globale "connect"-Funktion aufrufen, kannst Du das mit "::connect" machen. Das addressiert das Symbol "connect" im globalen Namespace. Mit uClib funktioniert das genauso.

    Du benötigst keine Root-Rechte unter Ubuntu, um eine Socketverbindung aufzubauen. Wenn Du da ein Problem hast, kannst Du das hier gerne genauer erläutern, dann können wir Dir bestimmt helfen.

    Eine Sache, bei der man Root-Rechte benötigt, ist das lauschen (listen) auf einem Socket < 1024. Das ist so vom Betriebssystem vorgegeben.

    Tntnet



  • tntnet schrieb:

    Wenn Du in Deiner Klasse eine Methode "connect" hast, und du möchtest die globale "connect"-Funktion aufrufen, kannst Du das mit "::connect" machen. Das addressiert das Symbol "connect" im globalen Namespace. Mit uClib funktioniert das genauso.

    Also haben die Sockets keine eigene Klasse oder einen eigenen Namespace?

    tntnet schrieb:

    Du benötigst keine Root-Rechte unter Ubuntu, um eine Socketverbindung aufzubauen. Wenn Du da ein Problem hast, kannst Du das hier gerne genauer erläutern, dann können wir Dir bestimmt helfen.

    Eine Sache, bei der man Root-Rechte benötigt, ist das lauschen (listen) auf einem Socket < 1024. Das ist so vom Betriebssystem vorgegeben.

    Ok daran lag es wohl. Habe eine kleine Client/Server-Anwendung laufen lassen. Der "Server" nutzt natürlich die listen Funktion. Danke dann wäre soweit alles geklärt.



  • LinuxProgrammierer schrieb:

    Also haben die Sockets keine eigene Klasse oder einen eigenen Namespace?

    In C gibt es weder Namespaces noch Klassen. Und da POSIX und BSD (wobei letzterem die Sockets-Bibliothek entspringt) rein C sind, ergibt sich das 😉


Anmelden zum Antworten