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