accept() vs. poll()
Alan M. Carroll
carroll at cs.uiuc.edu
Mon Dec 3 11:42:48 AEST 1990
Setup: 386ix 2.0.2, WD 8013 ethercard.
Problem: I can't get poll() to believe that if someone's connected on a
socket, that it should tell me there is input waiting on that fd.
According to TFM, "It is possible to _select(3i)_ or _poll(2)_ a socket
for the purposes of doing an _accept_ by selecting it for read". I can't
make this work. If I run a debugger on the code, and fudge the return
values of poll() by hand, the program "works", in the sense that the
accept() succeeds, and data flows correctly. If I try setting
O_NDELAY on the accepting socket, and setting a timeout on the poll(),
accept() returns -1/EAGAIN until someone actually makes a connection,
at which time accept() returns -1/EPROTO, and I can't clear it using
either read() or setsockopt().
I've tested the code on an Intel/AT&T SysV R4 box, and it seems to work
there.
What I want to do is service the data needs of a changing set of clients,
so I have to poll() established connections and allow for new connections
to be made.
--
Alan M. Carroll "It's psychosomatic. You need a lobotomy,
Epoch Development Team I'll get a saw."
CS Grad / U of Ill @ Urbana ...{ucbvax,pur-ee,convex}!cs.uiuc.edu!carroll
More information about the Comp.unix.sysv386
mailing list