Overzicht van sockets
De basis van netwerkcommunicatie
Overzicht van sockets is een gratis C Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject C Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus C Academy bevat in totaal 4 lessen.
Wat is een socket
Een socket is een eindpunt voor netwerkcommunicatie. Op POSIX-systemen is het een bestandsdescriptor waaruit u kunt lezen en waarnaar u kunt schrijven, zodat twee programma's gegevens kunnen uitwisselen via een netwerk of op dezelfde machine.
Het client-servermodel
De meeste netwerktoepassingen gebruiken het client-servermodel:
- De server koppelt zich aan een adres en wacht op verbindingen
- De client start een verbinding met de server
Zodra de verbinding tot stand is gebracht, kunnen beide kanten gegevens verzenden en ontvangen.
TCP versus UDP
Er zijn twee belangrijke transportprotocollen:
- TCP (SOCK_STREAM): betrouwbaar, geordend en verbindingsgericht
- UDP (SOCK_DGRAM): snel en verbindingsloos; pakketten kunnen verloren gaan of in een andere volgorde aankomen
Gebruik TCP voor correctheid en UDP voor streaming met lage latentie.
Een socket maken
De aanroep socket() retourneert een bestandsdescriptor. Argumenten: adresfamilie (AF_INET voor IPv4), type (SOCK_STREAM voor TCP) en protocol (0 voor de standaardwaarde).
/* Conceptual: sockets need a network environment to run */
#include <sys/socket.h>
#include <netinet/in.h>
int create_tcp_socket(void) {
int fd = socket(AF_INET, SOCK_STREAM, 0);
/* fd < 0 means error; check with perror */
return fd;
}Structuren voor socketadressen
Een IPv4-adres wordt beschreven door struct sockaddr_in, die de familie, poort en het IP-adres bevat. Functies gebruiken een algemene struct sockaddr *, dus u moet een typeconversie uitvoeren.
#include <netinet/in.h>
void fill_addr(struct sockaddr_in *addr, unsigned short port) {
addr->sin_family = AF_INET;
addr->sin_port = htons(port); /* host to network short */
addr->sin_addr.s_addr = INADDR_ANY; /* all interfaces */
}De bytevolgorde is belangrijk
Netwerken gebruiken big-endian (netwerkbytevolgorde). Converteer met:
htons/htonlvan host naar netwerk (short/long)ntohs/ntohlvan netwerk naar host
Converteer poorten en adressen altijd, anders communiceert u met de verkeerde bestemming.
IP-adressen converteren
inet_pton converteert een tekstueel IP-adres zoals "127.0.0.1" naar de binaire vorm die in sin_addr wordt opgeslagen, en inet_ntop voert de omgekeerde conversie uit om het af te drukken.
#include <arpa/inet.h>
#include <netinet/in.h>
int set_ip(struct sockaddr_in *addr, const char *ip) {
return inet_pton(AF_INET, ip, &addr->sin_addr); /* returns 1 on success */
}De aanroe reeks van de server
Een TCP-server roept doorgaans het volgende aan, in deze volgorde:
socket()makenbind()koppelen aan een adres en poortlisten()markeren als passiefaccept()een verbinding ophalen
De aanroe reeks van de client
Een TCP-client is eenvoudiger:
socket()makenconnect()verbinding maken met het adres van de server
Daarna kan de client met send en recv gegevens verzenden en ontvangen via dezelfde descriptor.
Verzenden en ontvangen
Gebruik send() en recv() (of de algemene functies write() en read()). Beide kunnen minder bytes overdragen dan gevraagd. Productiecode gebruikt daarom een lus totdat alle gegevens zijn verwerkt.
Controleer altijd retourwaarden
Elke socketaanroep kan mislukken. Bij een retourwaarde van -1 wordt errno ingesteld; roep perror aan om de fout te melden. Een recv van 0 betekent dat de andere partij de verbinding heeft gesloten. Betrouwbare netwerkcode staat of valt met foutcontrole.
Korte controle
Test uw begrip van de basisprincipes van sockets.
Samenvatting
U hebt de grondbeginselen van socketprogrammering geleerd.
- Een socket is een netwerkeindpunt en bestandsdescriptor
- Client-servermodel met TCP (betrouwbaar) of UDP (snel)
- Gebruik
sockaddr_inmethtonseninet_pton - Server: socket, bind, listen, accept. Client: socket, connect
Leer C met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 39
- Lessen
- 144
Veelgestelde vragen
Is de les “Overzicht van sockets” gratis?
Ja — de volledige tekst van “Overzicht van sockets” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus C Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus C Academy bevat in totaal 4 lessen.
Wat leer ik in “Overzicht van sockets”?
De basis van netwerkcommunicatie Je oefent met C Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met C Academy te beginnen?
Ervaring vooraf is niet nodig. C Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.
Hoe lang duurt de les “Overzicht van sockets”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over C Academy?
Ja. Elke les over C Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Overzicht van sockets
- TCP-server
- TCP-client
- Meerdere clients verwerken