Entwickler-Ecke

Windows API - Parameter der Socket Funktion


JnZn558 - So 01.02.09 15:13
Titel: Parameter der Socket Funktion
Ich beschäftige mich gerade mit Socket, nun sehe ich wenn ich ein Socket erzeugen will, sieht die Socketfunktion folgendermaßen aus:


Delphi-Quelltext
1:
so := socket(AF_INET, SOCK_STREAM, IPProto_TCP);                    


Soweit ich weiss, wenn "SOCK_STREAM" ausgewählt wurde, kommt bei Protokoll "IPProto_TCP" hin, und bei "SOCK_DGRAM" den IPProto_UDP. Nun frage ich mich wozu noch Protokollangabe? Mehr Tipparbeit? oder kann SOCK_STREAM noch andere Protokoll verwendet werden?


BenBE - So 01.02.09 15:21

Die Socket-Funktion gehört zum POSIX-Standard und ist typischerweise in der Form unter *nixen anzutreffen.

AF_INET gibt die Adressfamilie an, die für OSI-Layer 3 genutzt wird, wärend SOCK_STREAM und SOCK_DGRAM das Layer-4-Protokoll angeben. Du kannst z.B. auch IPv6 nutzen (Konstnte dazu müsst ich nachgucken), bzw. sagen, dass Du in Layer 3 bzw. 4 RAW sprechen willst, d.h. dich selber um die Paketerstellung kümmern willst.

Edit: IPv6 ist z.B. ganz simpel: AF_INET6 ... Hätt man auch gleich drauf kommen können ^^

Edit 2: Hier mal einen kurzen Link, der das Prinzip darstellt: http://publib.boulder.ibm.com/infocenter/iseries/v5r3/topic/rzab6/rzab6uafinet6.htm Ist zwar speziell für IPv6, ist mit den anderen Adressfamilien nicht anders.