anoniem Geplaatst: 19 augustus 2004 Delen Geplaatst: 19 augustus 2004 Is het mogelijk om te controleren of een socket in non-blocking mode is? Quote Link naar reactie
anoniem Geplaatst: 26 augustus 2004 Auteur Delen Geplaatst: 26 augustus 2004 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. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen