Thread View: be.comp.programming
18 messages
18 total messages
Started by Harbinger of Doom
Tue, 08 Jul 2003 19:21
Socket probleem in c++
Author: Harbinger of Doom
Date: Tue, 08 Jul 2003 19:21
Date: Tue, 08 Jul 2003 19:21
17 lines
1615 bytes
1615 bytes
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 -- Harbinger of Doom
Re: Socket probleem in c++
Author: KLinZ
Date: Tue, 08 Jul 2003 20:51
Date: Tue, 08 Jul 2003 20:51
19 lines
1787 bytes
1787 bytes
Harbinger of Doom wrote: > 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 setsockopt() -- www.zenobits.com
Re: Socket probleem in c++
Author: Harbinger of Doom
Date: Tue, 08 Jul 2003 22:58
Date: Tue, 08 Jul 2003 22:58
32 lines
2409 bytes
2409 bytes
"KLinZ" <klinz@NOSPAMzenobitsSPAMNO.com> schreef in bericht news:u8GOa.15813$KF1.302281@amstwist00... > Harbinger of Doom wrote: > > > 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 > > setsockopt() > Bij setsockopt() vind ik echt wel niets waarmee ik een connectie time-out kan instellen hoor. Ik vind enkel SO_RCVTIMEO en SO_SNDTIMEO, waarmee ik een receive en send time-out kan instellen, maar deze hebben geen effect bij het tot stand brengen van de connectie. Ben ik nu zo blind dat ik daar over kijk!? of zit het verscholen in een van de andere opties zonder dat ik het doorheb? Kan best zijn, ik ben behoorlijk nieuw in socket programmeren. Kan iemand mij nog eens helpen? HoD
Re: Socket probleem in c++
Author: Harbinger of Doom
Date: Tue, 08 Jul 2003 22:58
Date: Tue, 08 Jul 2003 22:58
32 lines
2373 bytes
2373 bytes
"KLinZ" <klinz@NOSPAMzenobitsSPAMNO.com> schreef in bericht news:u8GOa.15813$KF1.302281@amstwist00... > Harbinger of Doom wrote: > > > 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 > > setsockopt() > Bij setsockopt() vind ik echt wel niets waarmee ik een connectie time-out kan instellen hoor. Ik vind enkel SO_RCVTIMEO en SO_SNDTIMEO, waarmee ik een receive en send time-out kan instellen, maar deze hebben geen effect bij het tot stand brengen van de connectie. Ben ik nu zo blind dat ik daar over kijk!? of zit het verscholen in een van de andere opties zonder dat ik het doorheb? Kan best zijn, ik ben behoorlijk nieuw in socket programmeren. Kan iemand mij nog eens helpen? HoD
Re: Socket probleem in c++
Author: Harbinger of Doom
Date: Tue, 08 Jul 2003 23:04
Date: Tue, 08 Jul 2003 23:04
32 lines
2368 bytes
2368 bytes
"KLinZ" <klinz@NOSPAMzenobitsSPAMNO.com> schreef in bericht news:u8GOa.15813$KF1.302281@amstwist00... > Harbinger of Doom wrote: > > > 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 > > setsockopt() > Bij setsockopt() vind ik echt wel niets waarmee ik een connectie time-out kan instellen hoor. Ik vind enkel SO_RCVTIMEO en SO_SNDTIMEO, waarmee ik een receive en send time-out kan instellen, maar deze hebben geen effect bij het tot stand brengen van de connectie. Ben ik nu zo blind dat ik daar over kijk!? of zit het verscholen in een van de andere opties zonder dat ik het doorheb? Kan best zijn, ik ben behoorlijk nieuw in socket programmeren. Kan iemand mij nog eens helpen? HoD
Re: Socket probleem in c++
Author: Harbinger of Doom
Date: Tue, 08 Jul 2003 23:18
Date: Tue, 08 Jul 2003 23:18
4 lines
1321 bytes
1321 bytes
sorry voor de driedubbele post, had een probleempje met mn newsreader waardoor leek dat het bericht verstuurd was. HoD
Re: Socket probleem in c++
Author: Nicolas Barbier
Date: Wed, 09 Jul 2003 09:07
Date: Wed, 09 Jul 2003 09:07
16 lines
1685 bytes
1685 bytes
Harbinger of Doom wrote: > 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. connect() zou moeten afbreken met een foutwaarde als het een TCP socket betreft en de andere kant is niet aan het wachten via accept(). Als het een UDP socket betreft probeert connect() zelfs geen "fysieke" verbinding te maken, dus blokkeren zou eveneens niet mogen gebeuren. -- Nicolas Barbier
Re: Socket probleem in c++
Author: Harbinger of Doom
Date: Wed, 09 Jul 2003 10:45
Date: Wed, 09 Jul 2003 10:45
36 lines
2526 bytes
2526 bytes
"Nicolas Barbier" <anti@spam.invalid> schreef in bericht news:3f0bdb8d$0$6526$afc38c87@sisyphus.news.be.easynet.net... > Harbinger of Doom wrote: > > > 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. > > connect() zou moeten afbreken met een foutwaarde als het een TCP socket > betreft en de andere kant is niet aan het wachten via accept(). Als het een > UDP socket betreft probeert connect() zelfs geen "fysieke" verbinding te > maken, dus blokkeren zou eveneens niet mogen gebeuren. > > -- > Nicolas Barbier Bedankt voor de hint Nicolas. 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. Ik vroeg me dus af of er een manier bestaat om de tijd voordat er een time-out error gegenereerd wordt te verkleinen. -- Harbinger of Doom
Re: Socket probleem in c++
Author: Nicolas Barbier
Date: Wed, 09 Jul 2003 11:07
Date: Wed, 09 Jul 2003 11:07
17 lines
1844 bytes
1844 bytes
Harbinger of Doom wrote: (snip de rest wegens fout gequote: lees http://www.houghi.org/quote/ ) > 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. Is de server misschien gefirewalld en zendt hij daarom geen "connection refused"-pakketjes als er niemand op die poort aan het luisteren is? -- Nicolas Barbier
Re: Socket probleem in c++
Author: Harbinger of Doom
Date: Wed, 09 Jul 2003 11:22
Date: Wed, 09 Jul 2003 11:22
40 lines
2937 bytes
2937 bytes
"Nicolas Barbier" <anti@spam.invalid> schreef in bericht news:3f0bf791$0$6527$afc38c87@sisyphus.news.be.easynet.net... > Harbinger of Doom wrote: > > (snip de rest wegens fout gequote: lees http://www.houghi.org/quote/ ) > > > 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. > > Is de server misschien gefirewalld en zendt hij daarom geen "connection > refused"-pakketjes als er niemand op die poort aan het luisteren is? > Normaalgezien niet. Ook al is er een firewall, zou mijn poort moeten opengelaten worden. als ze gesloten is, mja, dan kan het wel zijn. Bij sommige servers krijg ik een error 10061 (Connection forcefully rejected) en bij de andere een error 10060 (Connection timed out) het is die laatste die zo lang duurt. Ik veronderstel dat bij een error 10061 de poort gesloten is, en dat bij een error 10060 de server gefirewalled is, ofdat het om een vals IP-adres gaat (lees: een computer die afligt) 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. -- Harbinger of Doom
Re: Socket probleem in c++
Author: Robrecht Jacques
Date: Wed, 09 Jul 2003 12:36
Date: Wed, 09 Jul 2003 12:36
25 lines
2368 bytes
2368 bytes
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
Re: Socket probleem in c++
Author: Harbinger of Doom
Date: Wed, 09 Jul 2003 23:02
Date: Wed, 09 Jul 2003 23:02
48 lines
3371 bytes
3371 bytes
"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. Ik heb het nog niet kunnen proberen, maar ik denk dat die twee inderdaad de �nige mogelijke oplossingen zijn. Nu moet ik enkel nog uitzoeken welke van de twee best zal zijn. Bedankt voor jullie hulp allemaal!!! -- Harbinger Of Doom
Re: Socket probleem in c++
Author: Harbinger of Doom
Date: Thu, 10 Jul 2003 04:09
Date: Thu, 10 Jul 2003 04:09
48 lines
3390 bytes
3390 bytes
"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. Ik heb het nog niet kunnen proberen, maar ik denk dat die twee inderdaad de �nige mogelijke oplossingen zijn. Nu moet ik enkel nog uitzoeken welke van de twee best zal zijn. Bedankt voor jullie hulp allemaal!!! -- Harbinger Of Doom
Re: Socket probleem in c++
Author: Roel Schroeven
Date: Thu, 10 Jul 2003 07:02
Date: Thu, 10 Jul 2003 07:02
53 lines
3787 bytes
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
Re: Socket probleem in c++
Author: Harbinger of Doom
Date: Thu, 10 Jul 2003 12:33
Date: Thu, 10 Jul 2003 12:33
26 lines
2475 bytes
2475 bytes
> > 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). > Dit leek mij ook een heel goede oplossing, maar ze blijkt niet zo goed te werken. gelijk waar ik probeer te connecteren krijg ik een error 10035: "operation would block" zelfs als ik mijn eigen pc probeer te connecteren. ik zet bvb een klein ftp-servertje op: ik run mijn programma op 127.0.0.1 poort 21 resultaat: --> operation would block daarna probeer ik: telnet localhost 21 resultaat --> geen probleem, ik krijg direct de login. blijkbaar is dit toch niet de perfecte methode! toch bedankt!! -- Harbinger of Doom
Re: Socket probleem in c++
Author: Roel Schroeven
Date: Thu, 10 Jul 2003 12:50
Date: Thu, 10 Jul 2003 12:50
32 lines
2874 bytes
2874 bytes
Harbinger of Doom wrote: > >> >> 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). >> > > Dit leek mij ook een heel goede oplossing, maar ze blijkt niet > zo goed te werken. > gelijk waar ik probeer te connecteren krijg ik een error 10035: > "operation would block" > zelfs als ik mijn eigen pc probeer te connecteren. > ik zet bvb een klein ftp-servertje op: > ik run mijn programma op 127.0.0.1 poort 21 > resultaat: --> operation would block > daarna probeer ik: telnet localhost 21 > resultaat --> geen probleem, ik krijg direct de login. > blijkbaar is dit toch niet de perfecte methode! > toch bedankt!! Ik kan je daar helaas niet echt mee helpen; ik weet dat het moet kunnen, maar ik heb het zelf ook nog nooit gedaan. Nu ja, als je het op een andere manier in orde krijgt, is het ook niet meer zo belangrijk. -- "Codito ergo sum" Roel Schroeven
Re: Socket probleem in c++
Author: Harbinger of Doom
Date: Thu, 10 Jul 2003 12:50
Date: Thu, 10 Jul 2003 12:50
44 lines
3448 bytes
3448 bytes
"Roel Schroeven" <j4nff5m02@sneakemail.com> schreef in bericht news:QidPa.14152$7h.14130@afrodite.telenet-ops.be... > Harbinger of Doom wrote: > > > >> > >> 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). > >> > > > > Dit leek mij ook een heel goede oplossing, maar ze blijkt niet > > zo goed te werken. > > gelijk waar ik probeer te connecteren krijg ik een error 10035: > > "operation would block" > > zelfs als ik mijn eigen pc probeer te connecteren. > > ik zet bvb een klein ftp-servertje op: > > ik run mijn programma op 127.0.0.1 poort 21 > > resultaat: --> operation would block > > daarna probeer ik: telnet localhost 21 > > resultaat --> geen probleem, ik krijg direct de login. > > blijkbaar is dit toch niet de perfecte methode! > > toch bedankt!! > > Ik kan je daar helaas niet echt mee helpen; ik weet dat het moet kunnen, > maar ik heb het zelf ook nog nooit gedaan. Nu ja, als je het op een > andere manier in orde krijgt, is het ook niet meer zo belangrijk. > Tis opgelost!! kben weer veel te haastig geweest en de manual maar half gelezen (shame on me) blijkbaar kreeg ik die errors omdat alles veel te snel verliep. via select() heb ik nu een tijd kunnen instellen voordat die "operation would block" error gegenereerd wordt. Nu werkt alles naar believen! Een grote DANKT U aan u allen voor de hulp!!! -- Harbinger Of Doom
Re: Socket probleem in c++
Author: Oelewapperke
Date: Thu, 10 Jul 2003 17:41
Date: Thu, 10 Jul 2003 17:41
45 lines
3229 bytes
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
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