Egy kommunikációs végpontot a t_open() hívással foglalhatunk le. Ez visszaad egy (int típusú) filedeszkriptort, amellyel a késobbiekben a kommunikációs végpontra hivatkozni lehet. A t_open() hívás alakja a következo:
td=t_open(filename,flags,info);
Ahol a filename paraméter egy stringre mutat, és az a string tartalmazza az általunk kívánt transzport-protokollt implementáló device driver filenevét (ezek a nevek nem szabványosítottak - a TCP-t leggyakrabban /dev/tcp, az UDP-t pedig /dev/udp néven érhetjük el). A flags paraméter a UNIX rendszerben megismert open() rendszerhívásnál használható flageket tartalmazza - szerepük ugyanz, mint ott volt.
A harmadik paraméter (neve info) egy t_info nevu struktúrára pointer. Ebben a struktúrában adja vissza a rendszer a használt transzport-protokollal kapcsolatos fontosabb információkat. A struktúra szerkezete és az egyes mezoinek a szerepe a következokben lesz ismertetve:
struct t_info { long addr; long options; long tsdu; long etsdu; long connect; long discon; long servtype; };
Az egyes mezok jelentése:
(Megjegyzés: a TLI a sürgos adatra az Out of Band Data helyett az Expedited Data fogalmat használja.)
Hogy a használt transzport-protokoll milyen paramétereket ad vissza, azt a következo programmal megtekinthetjük (és ezzel ez az elso példaprogramunk, ami a TLI-t használja):
/* * * tinfo.c * * Ez a program kiirja a TRANSPORTDEV transzport * szolgaltato parametereit (t_info komponenset). * * Forditasa: * * cc tinfo.c -lnsl_s */ #include <tiuser.h> #include <stdio.h> #include <fcntl.h> #define TRANSPORTDEV "/dev/tcp" main() { struct t_info ti; int tfd; tfd=t_open(TRANSPORTDEV,O_RDWR,&ti); if (tfd == (-1)) { perror("Hiba a t_open()-nel!"); exit(1); } printf("t_info.addr = %ld\n",ti.addr); printf("t_info.options = %ld\n",ti.options); printf("t_info.tsdu = %ld\n",ti.tsdu); printf("t_info.etsdu = %ld\n",ti.etsdu); printf("t_info.connect = %ld\n",ti.connect); printf("t_info.discon = %ld\n",ti.discon); printf("t_info.servtype = %ld\n",ti.servtype); t_close(tfd); }