6.1
|
We said that a descriptor set can be assigned to
another descriptor set across an equals sign in C. How is this done
if a descriptor set is an array of integers? (Hint: Look at your system's
<sys/select.h> or <sys/types.h>
header.)
|
6.2
|
When describing the conditions for which
select returns "writable" in Section 6.3, why
did we need the qualifier that the socket had to be nonblocking for
a write operation to return a positive value?
|
6.3
|
What happens in Figure 6.9 if we
prepend the word "else" before the word "if" on
line 19?
|
6.4
|
In our example in Figure 6.21 add code
to allow the server to be able to use as many descriptors as
currently allowed by the kernel. (Hint: Look at the setrlimit
function.)
|
6.5
|
Let's see what happens when the second argument
to shutdown is SHUT_RD. Start with the TCP client
in Figure 5.4 and make
the following changes: Change the port number from
SERV_PORT to 19, the chargen server (Figure
2.18); then, replace the call to str_cli with a call
to the pause function. Run this program specifying the IP
address of a local host that runs the chargen server.
Watch the packets with a tool such as tcpdump (Section C.5).
What happens?
|
6.6
|
Why would an application call shutdown
with an argument of SHUT_RDWR instead of just calling
close?
|
6.7
|
What happens in Figure 6.22 when the
client sends an RST to terminate the connection?
|
6.8
|
Recode Figure 6.25 to call
sysconf to determine the maximum number of descriptors and
allocate the client array accordingly.
|