Het elementaire socketsysteem voor gegevensoverdracht vraagt om het verzenden en ontvangen van gegevens via de socket zijn send() en recv(). Elke oproep heeft vier parameters nodig:
- socketbeschrijving: De socketdescriptor van de socket waarop gegevens moeten worden verzonden of ontvangen.
-buffer: Een verwijzing naar de geheugenbuffer die de gegevens bevat die moeten worden verzonden of die wordt gebruikt om de ontvangen gegevens op te slaan.
- lengte: De lengte van de gegevens die moeten worden verzonden of ontvangen.
- vlaggen: Een set vlaggen die kan worden gebruikt om het gedrag van de oproep te wijzigen.
De `send()`-aanroep verzendt gegevens van de buffer van het programma naar de buffer van de peer via de socket.
De `recv()`-aanroep ontvangt gegevens van de buffer van de peer naar de buffer van het programma via de socket.
De volgende vlaggen kunnen worden gebruikt met `send()`:
- MSG_CONFIRM :Zorgt ervoor dat de gegevens onmiddellijk via het netwerk worden verzonden.
- MSG_DONTROUTE: Voorkomt dat de gegevens via de standaardgateway worden gerouteerd. Deze functie kan handig zijn voor het verzenden van gegevens naar een specifieke host.
- MSG_EOR: Geeft aan dat het bericht het einde van een record is.
- MSG_MORE :geeft aan dat er meer gegevens worden verzonden.
- MSG_NOSIGNAL :Voorkomt het genereren van een SIGPIPE-signaal bij het verzenden van gegevens naar een gesloten socket.
- MSG_OOB :Verzendt de gegevens buiten de band. Deze functie kan handig zijn voor het verzenden van urgente gegevens.
De volgende vlaggen kunnen worden gebruikt met `recv()`:
- MSG_WAITALL: Zorgt ervoor dat de oproep wordt geblokkeerd totdat de volledige gegevenslengte is ontvangen.
- MSG_PEEK: Hiermee kan de toepassing naar de gegevens kijken zonder deze uit de buffer te verwijderen.
- MSG_OOB :Ontvangt de out-of-band gegevens.
De aanroepen `send()` en `recv()` kunnen worden gebruikt voor het verzenden en ontvangen van gegevens van welk type dan ook. Ze worden echter doorgaans gebruikt voor het verzenden en ontvangen van karaktergegevens. |