Programming - socket, connect ....

Jirka Kosina jikos na jikos.cz
Pondělí Únor 4 21:45:08 CET 2002


On Mon, 4 Feb 2002, Martin Kubecek wrote:

> Aha..
> Tak ze kdyz napriklad ve svem zdrojaku volam funkci: sockfd =
> socket(AF_INET, SOCK_STREAM, 0); tak se ve skutecnosti vola funkce
> inet_socket()...., v pripade ze by slo o AF_UNIX, tak unix_socket.....

No, je to trosku slozitejsi.

Pokud mne pamet neklame, tak na vsechny mozne operace nad sitovym socketem 
je jen jeden syscall, ktery se jmenuje nejak jako sys_socketcall(). 
(hledal bych v net/socket.c), a tam se podle hodnoty, ktera se precte 
nekde z registru udela switch podle toho, o jaky call presne slo, a zavola 
se prislusny sys_[bind|connect|listen|...].

V pripade, ze jde o volani socket(), tak se inicializuje nejaka struktura 
(myslim ze struct sock), kde se nastavi pointery na funkce, ktere se maji 
volat na tomto socketu pri sys_bind(), sys_accept(), apod.

No, a napriklad pro AF_INET je to inet_bind(), inet_accept(), atd.

Ale pisu to z hlavy, pravdepodobne je neco nekde jinak, ale princip je 
afaik zhruba tento.

-- 
JiKos.




Další informace o konferenci Linux