Sample program:
sd = socket(...);
bind(sd, ...);
listen(sd, ...);
first = accept(sd, ...);
second = accept(sd, ...);
while (1) {
FD_ZERO(set); FD_SET(first, &set); FD_set(second, &set);
select(max(first,second)+1, &set, ...)
if (FD_ISSET(first, &set)) {
n = read(first, buff, MAX);
if (n == 0) break;
n = write(second, buff, n);
}
if (FD_ISSET(second, &set)) {
n = read(second, buff, MAX);
if (n == 0) break;
n = write(first, buff, n);
}
}