next up previous contents
Next: Kapcsolat létrehozása Up: A Berkeley socketok Previous: Kommunikációs végpont (socket)

Socket címének kijelölése

Egy sockethoz a létrehozása után még nincs semmiféle cím hozzárendelve (egyes domainekben, ilyen például az Internet, hozzárendelodik egy "még nem foglalt" cím, de az nem mindig "a megfelelo cím", ezért gyakran szükséges annak a felülbírálata - például azért, hogy a szerver "well-known" portjának a címét beállítsuk a szerver socket-ján).

Az általában igaz, hogy az operációs rendszer "nem oszt ki" alapértelmezésként beálllított címként 5000-nél nagyobb port-számot, ezért a saját szervereinknek (amelyeknek egy szabad "well known" portot kell kiosztani) 5000-nél nagyobb sorszámú portot nyugodtan kijelölhetünk.

A bind() rendszerhívással lehet egy sockethoz egy címet rendelni. Ennek formája a következo:

     bind(sd, name, namelength);

Itt sd a socket-leíró, a name paraméter tartalmazza a pointert a sockethoz rendelendo címre (Internet domainben pointer egy sockaddr_in strukturára), és mivel a címek hossza domainenként más és más, ezért a namelength paraméter tartalmazza a name paraméterben levo cím hosszát byteban mérve.

(Fontos, hogy az Internet domainben egy szerver (mondjuk TCP) sockethoz a hozzábind-olt IP-cím (sin_addr) azt adja meg, hogy a socket melyik hálózati csatlakozón hajlandó elfogadni rákapcsolódási kérelmet. Ott a hálózati csatlakozónak az IP címét network byte orderben kell megadni, és van egy speciális konstans, az INADDR_ANY, amely azt jelenti ha sockethoz bind-oljuk, hogy a socket bármelyik hálózati csatlakozón(!) elfogad rákapcsolódási kérelmet. "Használat elott" természetesen ezt is network byte orderure kell konvertálni.)



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