help reg sockets

Started by
0 comments, last by krad7 21 years, 11 months ago
i am implementing an application which transmits udp packets back and forth. now, i want to give a timeout on the receiver side when he is trying to receive upd packets. for example, the server goes down, the receiver has no way to know if the server has gone down or not, so it''ll be waiting forever on ''recvfrom'' command. how do i give a timeout to ''recvfrom''? i heard you should use something called ''select'' and ''poll''.. how do i use that? thanks in advance Slow and steady wins the race.
Slow and steady wins the race.
Advertisement
The select function allows you to check if there is any data waiting for a given socket.

int select(
int nfds,
fd_set FAR *readfds,
fd_set FAR *writefds,
fd_set FAR *exceptfds,
const struct timeval FAR *timeout
);

Im looking at the documentation for the windows version of sockets (which is mostly compatible with berkley sockets in *nix, which I geuss you're running) so I'm unsure of the first parameter of select. I you set it to NULL I think it should work

The next three parameters are lists of sockets. Declare your fd_set for each and use,
FD_SET(socket s, fd_set * set);
to add your sockets to the set.

struct timeval {
long tv_sec;
long tv_usec;
};

Use timeval for the timeout, or pass NULL for a blocking operation.

The call to select will return the number of sockets ready. And I *think* from there you can use,
FD_ISSET(socket s, fd_set * set);
to check if the socket is ready.

I hope this is helpful, if you need anything clarified then post again ...

[edited by - eNGIMa on May 1, 2002 8:21:04 PM]
-=- Murphy was an optimist -=-

This topic is closed to new replies.

Advertisement