[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Программа-сервер TLI - Пример

Фрагмент программы показывает шаги сервера по созданию транспортной
точки для ожидания запросов клиента и связывания этой точки с
сетевым адресом, известным клиентам.
16        Объявляется указатель на структуру t_bind

19-22     Создается транспортная точка

24-27     Вызывается t_alloc для размещения struct t_bind

29-31     Инициализируются поля в структуре t_bind. Известный адрес
          сервера указывается в поле адреса

33-35     Вызывается  t_bind   для  связывания   адреса  с   точкой
          предоставления транспортных услуг сервера

37-39     Производится  проверка   совпадения  адреса   привязки  с
          требуемым адресом
                   ПРОГРАММА-СЕРВЕР TLI - ПРИМЕР

 1  #include  <tiuser.h>
 2  #include  <stropts.h>
 3  #include  <fcntl.h>
 4  #include  <stdio.h>
 5  #include  <signal.h>
 6
 7  #define DISCONNECT -1
 8  #define SRV_ADDR 1  /*Servers well known address */
 9
10  int conn_fd;
11  extern int t_errno;
12
13  main()
14  {
15     int listen_fd;
16     struct t_bind *bind;
17     struct t_call *call;
18
19     if (( listen_fd = t_open("/dev/tivc",
20                 O_RDRW, NULL) < 0) {
21         t_error("?t_open failed - listen_fd"); exit(1);
22     }
23
24     if ((bind = (struct t_bind *) t_alloc( listen_fd,
25             T_BIND, T_ALL) == NULL) {
26         t_error(T_alloc of t_bind failed"); exit(2);
27     }
28
29     bind->qlen = 1;
30     bind->addr.len = sizeof(int);
31     *(int *)bind->addr.buf = SRV_ADDR;
32
33     if(t_bind(listen_fd, bind, bind) < 0) {
34         t_error("t_bind failed - listen_fd"); exit(3);
35     }
36
37     if(*(int *)bind->addr.buf != 1) {
38         fprintf(stderr, "bound wrong address"); exit 4;
39     }
40  . . .