Системное программирование в UNIX средствами Free Pascal

       

Программирование в режиме TCP-соединения


Для того чтобы продемонстрировать основные системные вызовы для работы с сокетами, рассмотрим пример, в котором клиент посылает серверу поток строчных символов через TCP-соединение. Сервер преобразует строчные символы в прописные и посылает их обратно клиенту. В следующих разделах этой главы приведем тот же самый пример, но использующий сокеты UDP-протокола.

Сначала составим план реализации серверного процесса:

(* Серверный процесс *)

(* Включает нужные заголовочные файлы *)

uses sockets,stdio,linux;

var

  sockfd:longint;

begin

  (* Установить абонентскую точку сокета *)

  sockfd := socket (AF_INET, SOCK_STREAM, 0);

  if sockfd = -1 then

  begin

    perror ('Ошибка вызова socket');



    halt (1);

  end;

(* 'Связывание' адреса сервера с сокетом

Ожидание подключения

Цикл

  установка соединения

  создание дочернего процесса для работы с соединением

  если это дочерний процесс,

  то нужно в цикле принимать данные от клиента и посылать ему ответы

*)

end.

План клиентского процесса выглядит следующим образом:

(* Клиентский процесс *)

(* Включает нужные заголовочные файлы *)

var

  sockfd:longint;

begin

  (* Создает сокет *)

  sockfd := socket (AF_INET, SOCK_STREAM, 0);

  if sockfd = -1 then

  begin

    perror ('Ошибка вызова socket');

    halt (1);

  end;

  (* Соединяет сокет с адресом серверного процесса *)

  (* В цикле посылает данные серверу и принимает от него ответы *)

end.

Далее будем постепенно превращать эти шаблоны в настоящие программы, начиная с реализации сервера.



Содержание раздела