🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #4742

Re: Socket probleem in c++

#4742
From: Roel Schroeven
Date: Thu, 10 Jul 2003 07:02
53 lines
3787 bytes
Harbinger of Doom wrote:
> 
> "Robrecht Jacques" <Robrecht.Jacques@advalvas.be> schreef in bericht
> news:3f0c0d16$0$295$ba620e4c@reader0.news.skynet.be...
>> Harbinger of Doom wrote:
>> > "Nicolas Barbier" <anti@spam.invalid> schreef in bericht
>> > news:3f0bf791$0$6527$afc38c87@sisyphus.news.be.easynet.net...
>> >> Harbinger of Doom wrote:
>> >>> Het betreft een TCP socket, en deze breekt
>> >>> inderdaad af met een foutmelding als de server na enige tijd niet
>> >>> geantwoord heeft.
>> >>> Het probleem is echter, dat ik daar heel lang op moet wachten (soms
>> >>> tot 30sec)
>> >>> Ik weet heel zeker dat, als de server na een paar seconden niet
>> >>> geantwoord heeft, dat deze niet aan het luisteren is.
>> ...
>> > Er kunnen van die valse IP-adressen inzitten, want ik probeer te
>> > connecteren naar
>> > een lijst van 200 IP's die uit het register gelezen worden.
>> > Deze IP's worden daar opgeslagen bij vorige sessies van het programma.
>> > Het kan dus best zijn dat ��n of meerdere van die 200 ondertussen hun
>> > pc afgelegd hebben,
>> > en bijgevolg dus ook geen connection refused-antwoord kunnen geven.
>>
>> Is die 30s niet de tijd dat een socket in TCP_WAIT toestand zit? Misschien
>> kan je je programma threaden zodat je verder kan met de IPs die hebben
>> geantwoord en in een aparte thread wachten op de andere.
>>
>> Robrecht
>>
> 
> Ik heb in andere groepen dezelfde raad gekregen.
> Ik zou dus kunnen:
> ofwel:
> voor iedere IP een apparte thread maken, zodat deze
> tegelijk kunnen afgehandeld worden.
> ofwel:
> twee threads maken. Ik heb me nl. laten vertellen dat,
> als ik in de ene thread connect() aanroep, en dan na
> bvb 5sec. vanuit de tweede thread een closesocket() aanroep,
> connect() ogenblikkelijk zou moeten returnen met een bepaalde error.

Je kan ook non-blocking IO gebruiken op sockets. Uit 'man 7 socket': 
"It is possible to do non-blocking IO on sockets by setting the
O_NONBLOCK flag on a socket file descriptor using fcntl(2).  Then all
operations that would  block will  (usually)  return  with EAGAIN
(operation should be retried later); connect(2) will return EINPROGRESS
error.  The user can then wait for various events via poll(2) or
select(2)." (en dan volgt er een lijstje van I/O events).

-- 
"Codito ergo sum"
Roel Schroeven
Technical Details
Message-ID: <1c8Pa.13606$7h.14238@afrodite.telenet-ops.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-04!sn-xit-01!sn-xit-09!supernews.com!news.maxwell.syr.edu!transit.news.xs4all.nl!newsfeed.wxs.nl!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> <3f0bdb8d$0$6526$afc38c87@sisyphus.news.be.easynet.net> <knSOa.8810$V24.1491035148@hestia.telenet-ops.be> <3f0bf791$0$6527$afc38c87@sisyphus.news.be.easynet.net> <CVSOa.8861$zX4.1494718603@hestia.telenet-ops.be> <3f0c0d16$0$295$ba620e4c@reader0.news.skynet.be> <P91Pa.9707$0h2.1681258747@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 00:02:23 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-04!sn-xit-01!sn-xit-09!supernews.com!news.maxwell.syr.edu!transit.news.xs4all.nl!newsfeed.wxs.nl!aotearoa.belnet.be!news.belnet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
Newsgroups: be.comp.programming
From: Roel Schroeven <j4nff5m02@sneakemail.com>
Subject: Re: Socket probleem in c++
References: <XQEOa.7874$W94.1297123504@hestia.telenet-ops.be> <3f0bdb8d$0$6526$afc38c87@sisyphus.news.be.easynet.net> <knSOa.8810$V24.1491035148@hestia.telenet-ops.be> <3f0bf791$0$6527$afc38c87@sisyphus.news.be.easynet.net> <CVSOa.8861$zX4.1494718603@hestia.telenet-ops.be> <3f0c0d16$0$295$ba620e4c@reader0.news.skynet.be> <P91Pa.9707$0h2.1681258747@hestia.telenet-ops.be>
Organization: http://www.catb.org/~esr/faqs/smart-questions.html
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
User-Agent: slrn/0.9.7.4 (Linux)
Lines: 53
Message-ID: <1c8Pa.13606$7h.14238@afrodite.telenet-ops.be>
Date: Thu, 10 Jul 2003 07:02:21 GMT
NNTP-Posting-Host: 81.164.36.61
X-Complaints-To: abuse@telenet.be
X-Trace: afrodite.telenet-ops.be 1057820541 81.164.36.61 (Thu, 10 Jul 2003 09:02:21 MET DST)
NNTP-Posting-Date: Thu, 10 Jul 2003 09:02:21 MET DST