C standard library :: socket
socket - kreer et punkt for kommunikation
Denne funktion skal kreere en ubunden socket i en kommunikations domæne og returnere en file descriptor, som efterfølgende funktionskald kan bruge til at operere med.
Funktionen socket() tager følgende parametre:
- domain
- Angiver der kommunikationsdomæne i hvilket denne socket kreeres.
- type
- Angiver typen af socket der kreeres.
- protocol
- Angiver en bestemt protokol der skal anvendes med en socket. Angivelse af protokol som 0 får socket() til at bruge en uspecificeret standard protokol for en ønskede sockettype.
Parameteren domain angiver en adresse-familie brugt i et kommunikationsdomæne. Adresse-familien supporteret af systemet er implementations-defineret.
Symbolske konstanter som kan bruges for domain parameteren er defineret i <sys/socket.h> headeren.
Parameteren type angiver en sockettype som bestemmer semantikken af kommunikationen over en socket. De følgende sockettyper er defineret, dog kan en given implementering specificere flere sockettyper:
- SOCK_STREAM
- Giver sekventiel, pålidelig, bidirektionel, forbindelses-orienteret byte streams, og kan give transmissionsmekanismer for out-of-band data.
- SOCK_DGRAM
- Giver datagram, hvilket er forbindelsesløst-orienteret, upålidelig message med fast maksimum længde.
- SOCK_SEQPACKET
- Giver sekventiel, pålidelig, bidirektionel, forbindelses-orienteret transmission stier for record. En record kan sendes ved en eller flere output operationer og modtages ved en eller flere input operationer, men en enkelt operation overfører aldrig dele af mere end én record. Record grænser er synlige for modtageren gennem MSG_EOR flag.
Hvis parameteren protocol er ikke-nul skal den specificere en protokol som er supporteret af adresse-familien. Hvis parameteren protocol er nul, skal standard protokollen for denne adresse-familie bruges. Protokoller supporteret af systemet er implementations-defineret.
Processen kan behøve nødvendige rettigheder for at bruge socket() til at kreere nogle socket.
Returværdi
Ved succesfuld udførelse returneres et positivt nummerb for en socket file descriptor. Ellers -1 og errno sat til at indikere årsag.
Fejl
Funktionen socket() skal fejle hvis:
- [EAFNOSUPPORT]
- Implementering supporterer ikke en angivne adresse-familie.
- [EMFILE]
- Ikke flere file descriptor er tilgængelig for denne process.
- [ENFILE]
- Ikke flere file descriptor er tilgængelig for dette system.
- [EPROTONOSUPPORT]
- Protokollen er ikke supporteret af denne adresse-familie eller protokollen er ikke supporteret af implementeringen.
- [EPROTOTYPE]
- Sockettypen er ikke supporteret af protokollen.
Funktionen socket() kan fejle hvis:
- [EACCES]
- Process har ikke de fornødne rettigheder.
- [ENOBUFS]
- Utilstrækkelige ressourcer til gennemførelsen af kaldet.
- [ENOMEM]
- Utilstrækkelig memory til at fuldføre forespørgsel.