C standard library :: socket

accept - accepter en forbindelse på en socket

int accept (int fd, struct sockaddr addr, socklen_t *addr_len)

Denne funktion skal udtrække den første forbindelse på en kø af ventende forbindelser og kreere en ny socket med den samme socket-type-protokol og adresse-familie som den specificerede socket, og allokere en ny file descriptor for den socket.

Funktionen accept() tager følgende parametre:

fd
Angiver en socket som var kreeret med socket() og bundet til en adresse med bind() og udført et succesfuldt kald til listen().
addr
Er enten til nul-peger eller en peger til en sockaddr struktur hvor adressen på forbindelsen skal returneres.
addr_len
Peger til en socklen_t struktur som ved input specificerer en længde på den indgivne sockaddr struktur og ved output en længde på den gemte adresse.

Hvis den aktuelle længde på adressen er større end længden på den indgivne sockaddr struktur vil den gemte adresse blive afkortet.

Hvis protokollen tillader forbindelser på en ubunden klient og peer ikke er bundet, så vil værdien gemt i addr være ukendt.

Hvis lytte-køen er tom på forbindelses-anmodninger og O_NONBLOCK ikke er sat på file descriptor for socket, skal accept() blokerer indtil en forbindelse er tilstede. Hvis listen() køen er tom på forbindelses-anmodninger og O_NONBLOCK er sat på file descriptor for socket, skal accept() fejle og sætte errno til [EAGAIN] eller [EWOULDBLOCK].

Den af accept() returnerede file descriptor kan ikke acceptere flere forbindelser medens den originale fd socket forbliver åben og kan acceptere flere forbindelser.

Returværdi

Ved succesfuld udførelse returneres et positivt nummer som indikerer en file accepteret file descriptor socket. Ellers -1 og errno sat til at indikere årsag.

Fejl

Funktionen accept() skal fejle hvis:

[EAGAIN] eller [EWOULDBLOCK]
O_NONBLOCK er sat for socket og ingen forbindelser er tilstede til at blive accepteret.
[EBADF]
Parameteren fd er ikke en valid file descriptor.
[ECONNABORTED]
En forbindelse er afbrudt.
[EINTR]
Funktionen accept() blev afbrudt af et signal som blev indfanget før end en valid forbindelse blev optaget.
[EINVAL]
Den socket accepterer ikke forbindelser.
[EMFILE]
OPEN_MAX åbne file descriptorer er nået for den kaldende process.
[ENFILE]
Maksimum antal af file descriptor for systemet er allerede åben.
[ENOTSOCK]
Parameteren fd refererer ikke til en socket .
[EOPNOTSUPP]
Sockettypen i den specificerede socket supporterer ikke forbindelser.

Funktionen accept() kan fejle hvis:

[ENOBUFS]
Ingen plads til buffer.
[ENOMEM]
Der var ikke tilstrækkeligt med memory til fuldførelsen af operationen.
[EPROTO]
[XSR] [Option Start]En protokolfejl opstod, kan skyldes at protokolstakken for STREAMS ikke er blevet initialiseret[Option End].

Ressourcer C Library opslag The Single UNIX® Specification, Version 2 Copyright © 1997 The Open Group GNU C Library Engelsk, med masser af gode og dybe artikler. Danske søgeord Find selv de bedste danske søgeord til din hjemmeside.
Produkter Bookingsystem
System for reservation af tid for behandlinger, aftaler, lokaler, udstyr, personale. Tilpasset lektionstimer. Udskriver arbejdsplaner og ugeskema for opslag. Statistik. Danmarks bedste pris nu kun kr. 1.695,-
HelpdeskEffektiviser din support-organisation med et Helpdesksystem. Fjern tidrøvere der forhindrer fokus på problemløsning. Lektionsplan Formidling af generelle information og specifikke lektioner fra undervisere til studerende/elever. Medlemssystem Medlemssystem online med administration af medlemskartotek, kontingentbetalinger, flettefiler m.m.
Styr selv Styr selv indholdet på dine hjemmesider med Content Management System.
Citat Det eneste sted, hvor anerkendelse kommer før arbejde, er i ordbogen.

Anonym



Professionelle løsninger til Internettet. Webdesign, e-handel, cms, søgeoptimering, webhotel, analyse, Intranet mm.