Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
14.03.2002, 13:01
Tron



ich experementiere zur mit WinSock und ueberlege, was wohl die beste strategie ist, um auf pakete zu warten.
recv() mit nem blocking socket kommt nicht in frage, da ich noch nebenher was machen will.
Async ist auch net moeglich, da es ne konsolen app ohne fenster ist.

also bleiben:
Quellcode:STetra RecvSize;
while (...)
{
..ioctlsocket(Socket, FIONREAD, &RecvSize);
..if (RecvSize)
..{
....RecvSize = Recieve(...);
....// code, code, code
..}
}

und:
Quellcode:UTetra Value = 1;
ioctlsocket(Socket, FIONBIO, &Value);

STetra RecvSize;
while (...)
{
..RecvSize = Recieve(...);
..if (RecvSize == -1)
....if (WSAGetLastError() != WSAEWOULDBLOCK)
....{
......cout << "Error\n";
......break;
....}
..// code, code, code
}

was ist die bessere/elegantere moeglichkeit, oder gibt's noch andere alternativen?

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
001
14.03.2002, 13:51
dp
Administrator


ka ob du das meinst, aber schau mal hier: http://www.thewall.de/ThWboard/showtopic.php3?threadid=24428

--

zum Seitenanfang zum Seitenende Profil || Suche
002
14.03.2002, 14:45
apfelkorn



mh...
Also die erste Methode schien bei mir zumindest super zu funktionieren...

Rein von System her, wenn du mal überlegst, klingt es doch eingentlich schöner:
Wenn was am Port angekommen ist, dann frage es ab...
Weniger schön ist dagegen:
Wenn recv nicht blockieren wird, dann rufe es auf...

aber das ist nur die meinung eines lernenden ;)

--

zum Seitenanfang zum Seitenende Profil || Suche