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


Описание


uses sockets;

Function Connect(csockfd:Longint; Var address; add_len:Longint): Longint;

Function Connect(csockfd:longint; const address:string;

                 var SockIn,SockOut:text):Boolean;

Function Connect(csockfd:longint; const address:string;

                 var SockIn,SockOut:file):Boolean;

Function Connect(csockfd:longint; const address:TInetSockAddr;

                 var SockIn,SockOut:file):Boolean;

Первый параметр csockfd является дескриптором сокета клиента и не имеет отношения к дескриптору сокета на сервере. Параметр address указывает на структуру, содержащую адрес сервера, либо на адрес в формате строки. Параметр add_len определяет размер используемой структуры адреса.

Вторая, третья и четвертая формы вызова connect эквивалентны вызову первой с последующим использованием функции Sock2Text, преобразующей сокет sockfd в две файловые переменные типа Text, одна из которых отвечает за чтение из сокета (SockIn), а другая – за запись в сокет (SockOut).

Продолжая составление рассматриваемого примера, запишем следующий вариант текста программы клиента:

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

uses sockets,stdio,linux;

 

const

  SIZE=sizeof(tinetsockaddr);

  server:tinetsockaddr=(family:AF_INET; port:7000);

 

var

  sockfd:longint;

 

 

begin

  (* Преобразовать и сохранить IP address сервера *)

  server.addr := inet_addr ('127.0.0.1');

 

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

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

  if sockfd = -1 then

  begin

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

    halt (1);

  end;

 

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

  if not connect (sockfd, server, SIZE) then

  begin

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

    halt (1);

  end;

 

  (* Обмен данными с сервером *)

end.

Адрес сервера преобразуется в нужный формат при помощи вызова inet_addr. Адреса известных компьютеров локальной сети обычно можно найти в файле /etc/hosts.




- Начало -  - Назад -  - Вперед -



Книжный магазин