Ein Wrapper ist in der Regel ein Stück Programmcode, welcher primitive Datentypen weg kapselt. Ein Socket ist erstmal nichts weiter als ein Deskriptor für eine Resource. Wenn du mit Dateien gearbeitet hast, kennst du vielleicht den Deskriptor FILE.
Jetzt gibt es Leute, die wollen das Standardverhalten wegkapseln, um eine höhere Abstraktion einführen zu können. Beispiel dafür wäre:
ClassSocket
|
|----- ClassClientSocket
------ ClassServerSocket
Felix geht in den "Voraussetzungen" auch auf C++ ein und darauf, das schon viele Leute versucht haben, eine Socket-Klasse zu bauen, statt die Systemcalls zu verwenden und ihm bisher nicht bekannt geworden ist, das es jemandem zufriedenstellend gelungen wäre.
Prinzipiell läuft das jedoch so ab: Man erstellt sich den Prototypen für die Klasse und definiert private und öffentliche Methoden/Eigenschaften. Im Falle Sockets könnte das so aussehen:
C++:
class Socket
{
private int __socket;
private std::string __ip;
private int __port;
public Socket(std::string IP, int Port);
public void connect();
... weitere Methoden ...
};
Ich schreibe bewusst hier nur ein Beispiel, wie es aussehen könnte und keine fertige einsetzbare Lösung. Denn das Erstellen einer Wrapper-Klasse erfordert viel Erfahrung mit der zugrunde liegenden Technologie und es ist sehr viel sinnvoller, sich erstmal mit den Systemcalls an sich zu beschäftigen.
Erst wenn du verstanden hast, wie Sockets arbeiten, macht es evtl. Sinn eine Wrapper-Klasse zu bauen, um C++-Konform zu programmieren.