next up previous contents
Next: Kapcsolat lezárása Up: A Transport Layer Previous: Kapcsolat rendezett lebontása

Kapcsolat nem rendezett lebontása

Az abortív lebontáshoz a következo eljárásokat lehet felhasználni:

     t_snddis(tfd, sndcall);

illetve

     t_rcvdis(tfd, discinf);

ahol a tfd paraméter int típusú, míg a sndcall paraméter t_call struktúra típusú objektumra mutató pointer és a discinf paraméter egy t_discon struktura típusú objektumra mutató pointer.

Amikor az egyik kommunikáló fél úgy dönt, hogy nem küld több adatot a másiknak és a kapcsolatot abortiv módon le akarja bontani, akkor meg kell hívnia a t_snddis() 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. A TLI könyvtár belso állapotként a T_DISCONNECT értéket fogja tartalmazni, amit a késobb bemutatandó t_look() TLI függvénnyel lehet lekérdezni.

A kommunikációs partner a kapcsolat lebontását a t_rcvdis() függvény meghívásával fogadhatja el.

A sndcall paraméterben lehet a kommunikációs partnernek információkat küldeni arról, hogy mi a kapcsolatfelbontás oka. (Ez természetesen csak akkor megy, ha a használt transzport protokoll tud ilyenkor (kapcsolatfelbontáskor) adatokat küldeni a másik félnek. Ha a transzport protokoll ezt nem tudja, akkor ott egyszeruen egy NULL- pointert adjunk át paraméternek. Azt, hogy a transzport protokoll mire képes, azt a t_open() által visszaadott t_info strukturából tudhatjuk meg.)

A discinf típusa a következo struktura típusra mutató pointer:

     struct t_discon {
          struct netbuf udata;
          int reason;
          int sequence;
     };

Itt az udata a megkapott felhasználói adatot tartalmazza (ha volt), reason egy protokoll-függo kódot tartalmaz a kapcsolatlebontás okáról. A sequence paraméter szintén protokoll-függo dolgokat tartalmaz.



Csizmazia Balazs
Tue Apr 2 00:06:27 MET DST 1996