Bevat een overzicht EN vertaling van alle Powerpoints. Is gemaakt in het studiejaar .
Geen tijd en/of zin om zelf een samenvatting te maken? Geen probleem I GOT U!
Alles is op een overzichtelijke manier gebundeld tot één geheel. Ik persoonlijk heb erg veel aan de samenvattingen. Heb ze ook...
Week 1 College 1 – Socket Programming
Sockets
Zowel TCP als UDP protocollen leven in de
Transport laag en voegen het concept van poorten
toe om applicaties die op een bepaalde host draaien
te onderscheiden.
TCP biedt verbindingen gebaseerde, betrouwbare
netwerkcommunicatie en op streams gebaseerde
gegevensleveringsservices. Betrouwbaarheid wordt
bereikt door hertransmissie van gedropte pakketten.
UDP biedt verbindingsloze en pakketgebaseerde
levering waarbij de gegevens worden geleverd in
datagrammen - pakketten met poortnummers.
Note: Presentation: compression/encryption (al kan
dat ook op andere lagen)
Python biedt 2 levels voor toegang tot netwerk services
Note: socket.gethostname()
Retourneert een tekenreeks met de
hostnaam van de machine waarop de
Python-interpreter momenteel wordt
uitgevoerd. Sockets maken
communicatie tussen twee
verschillende processen op dezelfde
of verschillende machines mogelijk.
Om preciezer te zijn, het is een manier
om met andere computers te praten
met behulp van standaard Unix-
bestandsdescriptors. In Unix wordt
elke I/O-actie gedaan door een
bestandsdescriptor te schrijven of te
Higher level: Gebruik modules. lezen. Een bestandsdescriptor is
gewoon een geheel getal dat is
gekoppeld aan een geopend bestand
en het kan een netwerkverbinding,
een tekstbestand, een terminal of iets
anders zijn.
Voor een programmeur ziet en
gedraagt een socket zich net als een
bestandsdescriptor op laag niveau. Dit
komt omdat commando's zoals read()
en write() met sockets op dezelfde
manier werken als met bestanden en
pipes.
, BSD sockets
BSD Sockets is een API voor de
transportlaag van het Internet Protocol
Stack.
Het ondersteunt het maken van zowel
TCP- als UDP-netwerk-I/O.
Note: De client maakt verbinding met
de server door socket() aan te roepen
en vervolgens connect() met een
socketadres dat het IP-adres en de TCP-
poort bevat die worden gebruikt voor
de bind()-aanroep op de server. Op de
server keert de accept()functie terug
met een aansluitsocketbeschrijving
wanneer het verbindingsverzoek van de
client wordt ontvangen.
Na het verbinden van de serverblokken
Socket Programming in Python(Creëer je eigen netwerk service) op een oproep naar read() wachtend op
een clientverzoek. De client roept
write() aan om een verzoek te
verzenden en blokkeert vervolgens een
aanroep om read() te wachten op het
antwoord van de server. Wanneer de
server klaar is met het verwerken van
het verzoek, stuurt deze een antwoord
terug naar de client. De uitwisseling van
verzoeken en antwoorden wordt
herhaald totdat de client klaar is,
waarna de verbinding wordt verbroken.
De server detecteert deze gebeurtenis
wanneer read() 0 retourneert. De server
reageert door het einde van de
verbinding te sluiten en vervolgens
terug te keren om een andere
verbinding te krijgen.
In de meeste servers worden
Note: nc64 verbindingen in één thread
geaccepteerd en wordt een nieuwe
thread of proces gemaakt om elke
verbinding af te handelen. Om de zaken
eenvoudig te houden, beschrijft het
voorbeeld hier een iteratieve server
waar elk verzoek één voor één wordt
afgehandeld.
Read() / write() Staat in python: send()
recv()
Note;
str.encode(), die een bytes-representatie van de Unicode-
tekenreeks retourneert, gecodeerd in de gevraagde codering.
, Encoding
In Python 3 zijn alle strings Unicode. Dus als een tekstreeks over het netwerk moet worden verzonden, moet
deze worden gecodeerd.
Dit is de reden waarom de onderstaande server de encode('ascii') methode gebruikt voor de gegevens die
hij verzendt. Evenzo, wanneer een client netwerkgegevens ontvangt, worden die gegevens eerst ontvangen
als onbewerkte ongecodeerde bytes. Als u het afdrukt of probeert te verwerken als tekst, krijgen we
waarschijnlijk niet wat we verwachtten. In plaats daarvan moeten we het eerst decoderen. Dit is de reden
waarom de clientcode decode('ascii') gebruikt voor het resultaat.
Note: Het weergeven van een unicode-reeks als een reeks bytes staat bekend als codering.
Blocking (FYI only)
Het is mogelijk en vaak nodig om een socket op non-blocking te zetten. Dit betekent dat het programma niet
gaat zitten wachten op de ontvangst van gegevens.
Een socketobject kan zich in een van de drie modi bevinden: blokkerend, niet-blokkerend of time-out.
Sockets worden standaard altijd in de blokkeermodus gemaakt, maar dit kan worden gewijzigd.
UDP
Waar TCP een streamgeoriënteerd protocol is dat ervoor zorgt dat alle gegevens in de juiste volgorde
worden verzonden, is UDP een berichtgeoriënteerd protocol.
Echo UDP-client bijvoorbeeld:
Note: https://pymotw.com/3/socket/udp.html
, More information: https://pymotw.com/3/socket/index.html
Meer info!
https://docs.python.org/3/library/socket.html (all
details)
https://pythontips.com/2013/08/06/python-
socket-network-programming/
http://www.tutorialspoint.com/python/
python_networking.htm (simple to start with)
https://pymotw.com/2/socket/tcp.html (simple,
to start with)
2.1.3 Lesstof tentamen
Wat moet je weten voor het tentamen over dit onderwerp, dus hoe kan je je het beste voorbereiden?
• Leer alle informatie die je vindt in de powerpoint presentatie over dit onderwerp.
• Lees alle informatie die wordt aangeboden onder het kopje “Informatiebronnen”.
• Zorg dat je een fout kan halen uit de Python code waarin een eenvoudige TCP-server of TCP-client
wordt getoond.
• Zorg dat je zelf clients en servers hebt gemaakt zodat je getoonde code van anderen goed begrijpt en
kan aanpassen/verbeteren
2.1.4 Informatiebronnen
• Youtube: https://www.youtube.com/watch?v=XiVVYfgDolU
• Perfecte website voor allerlei modules, dus dit ook https://pymotw.com/2/socket/tcp.html
• Alle details, simpel http://www.tutorialspoint.com/python/python_networking.htm
• simpele voorbeelden, wat uitgebreidere uitleg https://pythontips.com/2013/08/06/python-socket-
network-programming/
Voordelen van het kopen van samenvattingen bij Stuvia op een rij:
Verzekerd van kwaliteit door reviews
Stuvia-klanten hebben meer dan 700.000 samenvattingen beoordeeld. Zo weet je zeker dat je de beste documenten koopt!
Snel en makkelijk kopen
Je betaalt supersnel en eenmalig met iDeal, creditcard of Stuvia-tegoed voor de samenvatting. Zonder lidmaatschap.
Focus op de essentie
Samenvattingen worden geschreven voor en door anderen. Daarom zijn de samenvattingen altijd betrouwbaar en actueel. Zo kom je snel tot de kern!
Veelgestelde vragen
Wat krijg ik als ik dit document koop?
Je krijgt een PDF, die direct beschikbaar is na je aankoop. Het gekochte document is altijd, overal en oneindig toegankelijk via je profiel.
Tevredenheidsgarantie: hoe werkt dat?
Onze tevredenheidsgarantie zorgt ervoor dat je altijd een studiedocument vindt dat goed bij je past. Je vult een formulier in en onze klantenservice regelt de rest.
Van wie koop ik deze samenvatting?
Stuvia is een marktplaats, je koop dit document dus niet van ons, maar van verkoper tiktokafm. Stuvia faciliteert de betaling aan de verkoper.
Zit ik meteen vast aan een abonnement?
Nee, je koopt alleen deze samenvatting voor €6,99. Je zit daarna nergens aan vast.