C standard library :: socket

connect - forbind en socket

int connect (int fd, const struct sockaddr addr, socklen_t len)

Denne funktion skal forsøge en forbindelse på en socket.

Funktionen connect() tager følgende parametre:

fd
Angiver file descriptor associeret med socket.
addr
Angiver peer-adressen, længden og formatet på adressen afhænger af adresse-familien på socket.
len
Angiver længden på addr.

Hvis socket ikke allerede er bundet til en lokaladresse vil connect() binde den til en adresse hvilket, undtaget socket's adresse-familie er AF_UNIX, er en fri lokal adresse.

Hvis den intierede socket ikke er i connection-mode, skal connect() sætte socket's peer adresse og ingen forbindelse optages. For SOCK_DGRAM sockets, identificerer peer adressen hvor alle datagrammer er sendt ved efterfølgende send() funktioner, og begrænser fjernsenderen for efterfølgende recv() funktioner. Hvis addr er en nul-adresse for protokollen skal socket's peer-adresse nulstilles.

Hvis den intierede socket er i connection-mode, skal connect() forsøge at etablere en forbindelse til adressen specificeret i addr parameteren. Hvis forbindelsen ikke kan etableres umiddelbart og O_NONBLOCK ikke er sat for socket file descriptor, skal connect() blokere i optil en ikke specificeret timeout interval indtil forbindelsen er etableret. Hvis timeout internallet udløber før en forbindelsen er etableret, skal connect() fejle og forsøget på at optage forbindelsen opgives. Hvis connect() bliver afbrudt af et signal som fanges medens blokeret og ventende på at etablere forbindelse, skal connect() fejle og sætte errno til [EINTR], men forbindelses anmodningen skal ikke opgives og forbindelsen skal etableres asynkron.

Hvis en forbindelse ikke kan etableres umiddelbart og O_NONBLOCK er sat for socket file descriptor, skal connect() fejle og sætte errno til [EINPROGRESS], men anmodningen om forbindelse skal ikke opgives, forbindelsen skal etableres asynkron. Efterfølgende kald til connect() for den samme socket før forbindelsen er etableret skal fejle og errno sættes til [EALREADY].

Når forbindelsen er etableret asynkront, select() og poll() skal indikere at socket file descriptor er klar til skrivning.

Socket i brug kan kræve at processen har tilstrækkelige rettigheder til brug af connect() funktionen.

Returværdi

Ved succesfuld udførelse returnerer connect() 0, ellers -1 returneres og errno sættes til indikation af fejlen.

Fejl

Funktionen connect() skal fejle hvis:

[EADDRNOTAVAIL]
Den angivene adresse er ikke valid for lokal maskinen.
[EAFNOSUPPORT]
Implementering supporterer ikke den angivene adressen for adresse-familien.
[EALREADY]
En anmodning om forbindelse er allerede i gang på den specificerede socket.
[EBADF]
Parameteren fd er ikke en valid file descriptor.
[ECONNREFUSED]
Måladressen lyttede ikke for forbindelser eller afviste forbindelses anmodningen.
[EINPROGRESS]
O_NONBLOCK er sat for socket file descriptor'en og forbindelse kan ikke umiddelbart etableres, forbindelsen vil etableres asynkron.
[EINTR]
Forsøget på etablering af forbindelse var afbrudt af et indfanget signal, forbindelsen vil etableres asynkron.
[EISCONN]
Den specificerede socket er connection-mode, men er allerede forbundet.
[ENETUNREACH]
Der er ingen rute til netværket.
[ENOTSOCK]
Parameteren fd refererer ikke til en socket.
[EPROTOTYPE]
Den angive adresse har en anden type en den socket bundet til den specificerede peer-adresse.
[ETIMEDOUT]
Et forsøg på at forbinde fik timeout før forbindelsen blev etableret.

Hvis adresse-familien på socket er AF_UNIX, så skal connect() fejle hvis:

[EIO]
En I/O fejl opstod under læsning eller skrivning til filsystemet.
[ELOOP]
Et loop eksisterer i symbolic links og opstod ved decifreringen af stinavnet i addr.
[ENAMETOOLONG]
En komponent i stinavnet oversteg NAME_MAX tegn, eller hele stinavnet oversteg PATH_MAX tegn.
[ENOENT]
En komponent i stinavnet har ikke navnet på en eksisterende fil eller stinavnet er en tom streng.
[ENOTDIR]
En komponent i sti-prefix i stinavnet i addr er ikke en mappe .

Funktionen connect() kan fejle hvis:

[EACCES]
Process har ikke de fornødne rettigheder.
[EADDRINUSE]
Forsøg på etablering af en forbindelse som bruger adresser der allerede er i brug.
[ECONNRESET]
Fjernhost nulstillede forbindelses anmodningen.
[EHOSTUNREACH]
Målhost kan ikke nåes (formodenlig fordi den er nede eller en ruterfejl).
[ENAMETOOLONG]
Stinavnet indgik i en symbolic link som gav en resultat der oversteg PATH_MAX.
[ELOOP]
Flere en SYMLOOP_MAX symbolic links var tilstede ved decifreringen af stinavnet i addr.
[ENETDOWN]
Lokalnetværkets interface brugt til at nå målet er nede.
[ENOBUFS]
Ingen buffer tilgængelig.
[EOPNOTSUPP]
Socket lytter og kan ikke optage forbindelser.

 

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 Husk på at stor kærlighed og store bedrifter kræver store risici.

Dalai Lama



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