Thread View: be.comp.programming
4 messages
4 total messages
Started by Johan Vervloet
Wed, 25 Feb 2004 09:41
linux netwerkprogrammeren
Author: Johan Vervloet
Date: Wed, 25 Feb 2004 09:41
Date: Wed, 25 Feb 2004 09:41
31 lines
2192 bytes
2192 bytes
Hallo, Ik zou zo graag eens experimenteren met netwerkprogrammeren, en ik ben van plan een simpel serverapplicatietje te schrijven voor mijn linux pc, met de volgende functionaliteit: - connecties aanvaarden van meerdere clients tegelijk - boodschappen ontvangen van clients - boodschappen sturen naar clients Ik heb al eens rondgekeken op het net, en een bruikbaar alternatief lijkt me ACE: http://www.cs.wustl.edu/~schmidt/ACE.html Maar deze library komt mij op het eerste gezicht nogal omslachtig over. (Of vergis ik mij?) Ik weet dat er in QT ook zoiets bestaat als QSocket, maar ik zou liever niet hebben dat heel QT geinstalleerd moet zijn om mijn servertje te laten draaien. Wat zouden jullie gebruiken om zo'n zeer basic servert te schrijven? Liefst C++, omdat ik daar het meest mee vertrouwd ben, maar ik sta ook open voor iets anders. In ieder geval bedankt, Johan -- Stem gewestpallieter.be tot jeugdwerksite van het jaar! http://www.gewestpallieter.be
Re: linux netwerkprogrammeren
Author: Frederik Himpe
Date: Wed, 25 Feb 2004 10:10
Date: Wed, 25 Feb 2004 10:10
13 lines
1365 bytes
1365 bytes
* Johan Vervloet <johan.vervloet@ua.ac.be>: > > Wat zouden jullie gebruiken om zo'n zeer basic servert te schrijven? > Liefst C++, omdat ik daar het meest mee vertrouwd ben, maar ik sta ook > open voor iets anders. Check eens Beej's guide to network programming (te vinden met je favoriete zoekmachine). Frederik -- Jabber ID: freggy@amessage.de http://users.telenet.be/fhimpe
Re: linux netwerkprogrammeren
Author: Johan Vervloet
Date: Wed, 25 Feb 2004 17:56
Date: Wed, 25 Feb 2004 17:56
18 lines
1680 bytes
1680 bytes
Op Wed, 25 Feb 2004 10:10:29 +0000, schreef Frederik Himpe: > * Johan Vervloet <johan.vervloet@ua.ac.be>: >> >> Wat zouden jullie gebruiken om zo'n zeer basic servert te schrijven? >> Liefst C++, omdat ik daar het meest mee vertrouwd ben, maar ik sta ook >> open voor iets anders. > > Check eens Beej's guide to network programming (te vinden met je > favoriete zoekmachine). Geweldig. Bedankt! Johan -- Stem gewestpallieter.be tot jeugdwerksite van het jaar! http://www.gewestpallieter.be
Re: linux netwerkprogrammeren
Author: Oelewapperke
Date: Thu, 26 Feb 2004 16:51
Date: Thu, 26 Feb 2004 16:51
66 lines
3786 bytes
3786 bytes
Johan Vervloet wrote:
> Hallo,
>
> Ik zou zo graag eens experimenteren met netwerkprogrammeren, en ik ben van
> plan een simpel serverapplicatietje te schrijven voor mijn linux pc, met
> de volgende functionaliteit:
>
> - connecties aanvaarden van meerdere clients tegelijk
> - boodschappen ontvangen van clients
> - boodschappen sturen naar clients
Wat je concreet wil doen is select(en) op een aantal connecties. Het
principe is eenvoudig.
Jij opent X aantal connecties. Deze zijn genummerd. Enkele voorbeelden
-> 8 : een connectie die toelaat dat clients connecteren op poort 80
-> 15: een connectie localhost:5789:jan-met-de-pet:8767 voor jan zijn
browser
-> 31: een connectie localhost:9822:hanne.telenet:1241 voor hanne
Select zegt tegen het besturingssysteem "als er een connectie komt op een
van deze poorten (die je dan bij nummer noemt), dan verwittigd ge mij". Hoe
werkt dat concreet ?
open_connectie1();
open_connectie2();
open_connectie3();
van deze aanroepen krijg je een nummer terug, dat je moet bijhouden (de
return waarde van de socket() syscall) ...
Dan kan je op die getallen selecten (de manpage bevat een mooi voorbeeld),
en als die functiecall returned dan kan je zien op welke connecties er
activiteit is geweest, dan handel je die activiteiten af (bv ... er zijn
verse bytes binnengekomen -> reply sturen).
Dit noemt asynchroon programmeren, als het over gui's gaat ook wel
event-based programmeren genoemd, door tegenstanders ook soms "de visual
basic manier" ;-p.
Als je een toolkit als QT of GTK gebruikt, dan werk je automatisch op deze
manier (de qt QApplication::exec doet o.m. een select).
Het alternatief voor asynchroon programmeren is multithreaded programmeren,
Asynchroon programmeren is efficienter dan multithreaded (geen context
switches)*, en eenvoudiger (geen locking benodigd, geen concurrency
issues**).
Het moet wel gezegd worden dat op extreme schaal multithreaded programmeren
het begint te winnen van asynchroon. Zeker in talen als java (met een
multithreaded vm) is het een pak simpeler en sneller van threaded te
werken, omdat je met tasklet achtige dingen kan werken (een threadje dat je
aanmaakt en weggooit).
Ik hoop dat ik je een beetje verder geholpen heb.
groeten
Oelewapperke
* bij bepaalde workloads kan je je hierover vragen beginnen te stellen wel
** behalve natuurlijk, als je daar zelf voor zorgt, gewoon in de gaten
houden dat je echt wel request-per-request moet werken, een half request
MOET je bufferen of je hebt het waarschijnlijk zitten
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads