Лабораторная работа №1.
Параллельный эхо-сервер.

Шаблон кода параллельного сервера:
...
pid_t pid;
int listenfd, connfd;

listenfd = socket( ... );
bind(listenfd, ... );
listen(listenfd, LISTENQ);

for (;;) {
 connfd = accept(listenfd, ...);

 if ((pid = fork() == 0) {
  close(listenfd); /* дочерний процесс закрывает
                      прослушиваемый сокет */
  doit(connfd);    /* обработка запроса */
  close(connfd);   /* с этим клиентом закончено */
  exit(0);         /* дочерний процесс завершен */
 }

 close(connfd);    /* родительский процесс закрывает
                      присоединенный сокет */
}
...

Задание

  1. Создать параллельный эхо-сервер с привязкой ко всем интерфейсам.
  2. При каждом новом подключении выводить его сокет-пару на консоль сервера, а также сокет-пары всех существующих в настоящий момент подключений.
  3. Обеспечить визуализацию всех возникающих ошибок сервера, аврийную остановку в случае необходимости.