[<<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 . . .