select
-
wie krieg ich bei select raus, was genau bei einem Socket gemach werden kann ?
z.B.:SOCKET s; fd_set myset; FD_SET(s, &myset); select (1, &myset, NULL, NULL, NULL); if (FD_ISSET(s, &myset)) { //hier nach aktionen unterscheiden } else ....
versteht ihr? ich will wissen, ob ich da lesen soll, accept() oder weiß der kuckuk was noch. wie machich das ??
<edit> Frage hat sich schon fast geklärt </edit>
[ Dieser Beitrag wurde am 01.06.2003 um 17:40 Uhr von N00Bie editiert. ]
-
schau dir nochmal select an
select hat ja 3 fd_set* Parameter, die descriptoren, die beim 1. fd_set * Parameter angegeben werden, werden auf lesbarkeit geprüft, die beim 2. auf schreibbarkeit und die beim 3. auf Fehler
-
weiß ich, aber wenn ich bei
if (FD_ISSET(s, &myset))
true bekomm, dann kann das ja entweder accept() oder recv() bedeuten...
oder ?
-
Um einen Socket mit der Funktion accept() zu verwenden, muss dieser an einen Port gebunden werden und in den Lauschmodus versetzt werden. Du musst nur noch Prüfen welcher Socket gebunden ist, und welcher nicht.
Allerdings habe ich noch die davon gehört, dass accept() mit select() verwendet wird. Es existiert sowiso eine interne Warteschlange, sodass man den gebundenen Socket sowieso auf NONBLOCK stellen kann. Ein select() ist gar nicht nötig.
-
select kann auf alles, was mit einem file descriptor passiern kann, angewendet werden. auch accept. non blocking io ist nur eine andere methode, um auf ein file descriptor ereignis zu reagieren.
björn
-
Was ist 'SOCKET'?
mfg
v R
-
ein file descriptor der auf eine netzwerk resource zeigt: entweder eine verbindung oder ein server, dh ein horchender socket, der auf verbindungsanfragen wartet.
björn
-
Das ist mir klar, aber ich kenne kein 'SOCKET'
mfg
v R
-
SOCKET ist wahrscheinlich ein typedef int, wobei ich den Sinn nicht verstehe, wenn dann würde ich vielleicht den Sinn eines descriptor typedef verstehen, da int ja auch descriptoren für Dateien, FiFos, Shared Memory, Semaphores und alles mögliche sind und man ja viele Operationen auf alle anwenden kann