Ga naar inhoud

WinSock: controleren of een socket in non-blocking mode is


anoniem

Aanbevolen berichten

Simpel ... als het lang duurt dan is het blocking mode :p Sockets zijn standaard in blocking mode in Winsock, tenzij je anders aangeeft bij de declaratie ervan of via ioctlsocket(). Als je toch wilt controleren moet je sowieso een call uitvoeren. Je hebt verschillende methodes, maar of ze efficient zijn? tsjah. [list:bf1652e3e6][*:bf1652e3e6]Als je IO::Socket::INET gebruikt dan zit het in de $socket->blocking. [*:bf1652e3e6]Een manier is een call uit te voeren en via WSAEWOULDBLOCK (10035), WSAEINPROGRESS (10036) of WSAEALREADY (10037) erachter komen. [*:bf1652e3e6]Als het async is dan wordt de call of gelijk uitgevoerd of retourneert gelijk WSAEWOULDBLOCK (10035). [*:bf1652e3e6]Met select() kun je je op de hoogte laten brengen over de leesbaarheid en/of schrijfbaarheid. Handige hiervan is dat je een timeout kan opgeven. Met WSAEINPROGRESS kom je erachter of een blocking call actief is. Het heeft wel mogelijke bugs in win98 ([url=http://support.microsoft.com/default.aspx?scid=kb;en-us;177346]lees meer[/url])[/list:u:bf1652e3e6]Volgens mij kraam ik onzin uit, spijt mij het is laat :) Ik gebruik sowieso geen async sockets zolang ik het kan missen, omdat ik anders telkens moet pollen of met select een timeout moet opgeven wat niet zinnig klinkt.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...