🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #4753

Re: Socket probleem in c++

#4753
From: Oelewapperke
Date: Thu, 10 Jul 2003 17:41
45 lines
3229 bytes
Harbinger of Doom wrote:

> Hello,
> 
> Ik werk voor het ogenblik aan een C++ project dat
> data over een netwerk moet verzenden en ontvangen.
> Daarvoor gebruik ik het SOCKET datatype.
> Alles werkt perfect, op ��n ding na:
> Als ik probeer te verbinden met een server die niet
> aan het luisteren is, dan blijft de connect() functie hangen.
> 
> Ik ben aan het zoeken naar iets dat me toelaat om
> een time-out in te stellen voor de verbinding, maar ik niet echt iets.
> Is er een manier om een connectie time-out in te stellen? en zo ja, hoe?
> MS Visual C++ 6.0 is mijn compiler.
> dank bij voorbaat

Asynchrone sockets en select() (of poll() ) dienen hiervoor. Je kan dat 
altijd zelf doen (een socket lib schrijven heb ik al een keer of 4 gedaan, 
dat is niet moeilijk, eentje met asynchrone support is serieus moeilijker 
maar de tweede of derde keer zou je ze toch al functioneel moeten kunnen 
krijgen).

Als je een "goeie" GUI app wilt (dus een die nooit blokkeert) ga je je heel 
programma rond die socket lib moeten draaien (gelijk bv QT dat doet, of 
eefje (op savannah), en gelijk het de bedoeling is dat je in windows 
programmeert). Dan moet je in je programma alles asynchroon doen (je kan 
daarin heel ver gaan, zoals bv de icoontjes van menu-entries pas inlezen 
als ze nodig zijn, of grote delen van je applicatie niet inladen als het 
programma start).

Basically maak je 1 centrale routine die events verzamelt en dispateched 
(via boost, libsigc++, of een eigen versie (heb ik in een oude versie van 
eefje geprobeerd, maar dit is extreem tricky), en je heel programma bestaat 
uit (liefst kleine) stukjes code die dan aangeroepen worden door die 
centrale routine, heel ff iets doen, en terug retourneren naar die centrale 
routine.

ACE (adaptive communications environment) is de uitgebreidste (en meest 
functionele lib die ik al gevonden heb die dit kan doen. De handleiding 
ervan is echter zo'n 2000 pagina's. En ACE dwingt u van op een bepaalde 
(goede) manier te programmeren, dat kan een serieus probleem zijn ;-p. ACE 
is gratis btw.

Oelewapperke
Technical Details
Message-ID: <ZyhPa.14367$7h.14317@afrodite.telenet-ops.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-08!supernews.com!newsfeed.news2me.com!newsfeed.icl.net!newsfeed.fjserv.net!colt.net!kibo.news.demon.net!demon!aotearoa.belnet.be!news.belnet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
References: <XQEOa.7874$W94.1297123504@hestia.telenet-ops.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII
X-Google-Thread: fcea4,63379b935ce3281f
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2003-07-10 10:41:15 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-08!supernews.com!newsfeed.news2me.com!newsfeed.icl.net!newsfeed.fjserv.net!colt.net!kibo.news.demon.net!demon!aotearoa.belnet.be!news.belnet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
From: Oelewapperke <Oelewapperke@wol.be>
Subject: Re: Socket probleem in c++
Newsgroups: be.comp.programming
References: <XQEOa.7874$W94.1297123504@hestia.telenet-ops.be>
Lines: 45
User-Agent: KNode/0.6.1
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8Bit
Message-ID: <ZyhPa.14367$7h.14317@afrodite.telenet-ops.be>
Date: Thu, 10 Jul 2003 17:41:13 GMT
NNTP-Posting-Host: 213.118.140.75
X-Complaints-To: abuse@telenet.be
X-Trace: afrodite.telenet-ops.be 1057858873 213.118.140.75 (Thu, 10 Jul 2003 19:41:13 MET DST)
NNTP-Posting-Date: Thu, 10 Jul 2003 19:41:13 MET DST
Organization: Telenet Internet