next up previous contents
Next: Kapcsolatra várakozás Up: A Transport Layer Previous: TSAP címének kijelölése

Kapcsolat létrehozása

Összeköttetés-alapú kliens-szerver kapcsolatok létrehozására a kliens a t_connect() TLI könyvtári rutint használhatjuk. Alakja a következo:

     ret=t_connect(tfd, sndcall, rcvcall);

ahol a tfd paraméter egész típusú, míg sndcall és rcvcall paraméterek t_call struktúra típusú objektumra mutató pointerek. A struktúra szerkezete a következo:

     struct t_call {
          struct netbuf addr;
          struct netbuf opt;
          struct netbuf udata;
          int sequence;
     };

A sndcall paraméter a kapcsolat felépítéséhez szükséges információkat tartalmazza: az addr komponens a szerver címét tartalmazza, az opt komponens tartalma protokoll-függo, a kapcsolat létrehozásának a menetét lehet vele befolyásolni. Ha az alapértelmezésnek számító protokoll-opciókat fogadjuk el, akkor az opt netbuf típusú struktúra len komponensét állítsuk nullára. Az udata komponens a kapcsolat felépítésekor a szervernek elküldendo (felhasználó által szabadon megválasztható) adatokat tartalmazza. A sequence komponensnek semmi szerepe nincs. A visszatéréskor a rcvcall struktúra addr komponense a szerver címét, az opt pedig a ténylegesen beállított protokoll-opciókat tartalmazza. Visszatéréskor a rcvcall struktúra udata komponense a szerver által (a kapcsolatfelvétel fázisában) visszaküldött válasz-adatokat tartalmazza (a kapcsolatfelvétel folyamán nem minden transzport-protokoll tud felhasználói adatokat továbbítani, ezért lehet, hogy ez a mezo "üres" adatbufferre mutat - ezt a lehetoséget ne használjuk ki, ha (viszonylag) protokoll-független programokat akarunk írni - vagy használjuk a t_open() TLI függvény által visszaadott t_info strukturát, aminek a connect mezejébol megtudhatjuk, hogy mennyi felhasználói adatot lehet a kapcsolat felépítésekor a szervernek átadni.). A visszatéréskor a rcvcall strukturában levo sequence komponensnek semmi jelentosége nincs. (Ha a sndcall paraméter udata komponensének len mezeje nulla, akkor nem lesz felhasználói adat a kapcsolat felépítésekor a szervernek elküldve - mégegyszer mondom: a kapcsolatfelépítés során ha lehet ne küldjünk adatokat a szervernek, mert azt kevés protokoll támogatja.)

Ha a rcvcall komponens NULL-pointer, akkor a visszatéréskor a TLI semmit nem ír bele (nyilván nem is tudna), és ez azt jelenti, hogy nem vagyunk kíváncsiak a benne levo információkra.



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