Már volt róla szó, hogy a TLI kétféle lehetoséget nyújt a kapcsolat (összeköttetés - itt errol van szó) lebontására: rendezett vagy rendezetlen (abortív) lebontásra van lehetoség. Az abortoív lebontás nem garantálja azt, hogy a már elküldött, de a címzetthez még nem kézbesített adatok valamikor is el lesznek juttatva a címzetthez - a rendezett lebontás ezt garantálja. A rendezett lebontáshoz a következo eljárásokat lehet felhasználni:
t_sndrel(tfd);
illetve
t_rcvrel(tfd);
Hogyan is történik a rendezett lebontás? Az összeköttetés általában kétirányú: mindkét kommunikáló fél küldhet adatokat a másiknak. Amikor az egyik fél úgy dönt, hogy nem küld több adatot a másiknak, akkor meg kell hívnia a t_sndrel() TLI függvényt. A másik félnél ekkor a további adatokra várakozó t_rcv() TLI függvény hibával tér vissza (visszatérési értéke -1 lesz) és a t_errno változó a TLOOK konstans értéket fogja tartalmazni. Az TLI könyvtár belso állapotként a T_ORDREL értéket fogja tartalmazni, amit a -- késobb bemutatandó -- t_look() TLI függvénnyel lehet lekérdezni - erre nézzük meg a következo példát (vagyis a t_rcv() milyen környezetben szokott elofordulni):
while (t_rcv(tfd, ...) != (-1)) { /* * Adat erkezett, dolgozzuk fel ... */ } if ((t_errno == TLOOK) && (t_look(tfd) == T_ORDREL)) { t_rcvrel(tfd); /* Vettuk a lebontasi kerelmet */ t_sndrel(tfd); /* Elkuldjuk a mi lebontasi kerelmunket is */ } else { t_error("Hiba a t_rcv() hivasnal!"); }
Látható, hogy a kommunikációs partner a kapcsolat lebontását a t_rcvrel() függvény meghívásával fogadja el. Ennek a rutinnak a meghívása természetesen "kötelezo".