struct sockaddr_un v / s sockaddr - C (Linux)
Wie ist struct sockaddr anders aus struct sockaddr_un ?
Ich wissen, dass wir diese Strukturen, die im client-server-Module,die für die Bindung an das socket, das socket-Adresse.Und wir verwenden einen cast-operator für es zu akzeptieren struct sockaddr_un.
Möchte ich wissen, wie andere/ähnliche Sie sind,und warum der cast-operator?
InformationsquelleAutor der Frage Pavitar | 2010-09-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
"struct sockaddr" ist eine Allgemeine definition. Es ist von einer socket-Funktion, die erfordert, dass eine Adresse.
"struct sockaddr_un" ("Unix sockets" - Adresse) ist eine bestimmte Art der Adresse Familie.
Häufig gesehen "struct sockaddr_in" (ein "Internet-Steckdose" - Adresse) ist eine weitere spezielle Art der Adresse Familie.
Die Besetzung ist das, was der Socket-APIs zu akzeptieren, einen gemeinsamen parameter Typ, der tatsächlich von unterschiedlichen tatsächlichen Arten.
Hier ist ein guter link, der zeigt, verschiedene Adressfamilie Definitionen:
http://www.cas.mcmaster.ca/~qiao/courses/cs3mh3/tutorials/socket.html
InformationsquelleAutor der Antwort paulsm4
Einen
struct sockaddr
sollten generell nur verwendet werden, als Basis-Typ für einen Zeiger. Es ist eine Struktur vorgesehen, zur Deckung der gemeinsamen anfangs-Reihenfolge der Mitglieder in der Adresse der Familie bestimmte socket-Adress-Typen (struct sockaddr_un
struct sockaddr_in
struct sockaddr_in6
etc.)Ist das einzige Mitglied können Sie sich auf
struct sockaddr
habe, ist eine einzelnesa_family_t
Angabe der socket-Adress-Familie. Die Idee ist, erhalten Sie eine Art von Polymorphismus - Sie können eine Funktion haben, die arbeiten können auf verschiedenen socket-Adress-Typen:Beachten Sie aber, dass code wie oben, wird im Allgemeinen als zu brechen, die die "strict aliasing" - Regel in C - wenn Sie möchten, zu tun, die in Ihrem eigenen code, Sie sollen ein union-Typ:
InformationsquelleAutor der Antwort caf