CONNECT(2)

명칭
connect - 소켓상에서 접속을 개시한다

프로그램 라이브러리
libc

서식
<sys/types.h> <sys/socket.h> int connect(int s, const struct sockaddr *name, socklen_t namelen)

해설
파라미터 s (은)는 소켓입니다. 이 타입이 SOCK_DGRAM 의 경우, 이 호출은 소켓을 연결시킬 수 있다 통신 상대를 지정합니다. 이 주소는 송신 데이터 그램의 송신지이며, 수신 데이터 그램의 송신원이 되는 유일한 주소입니다. 소켓의 타입이 SOCK_STREAM 의 경우, 이 호출은 통신 상대의 소켓에 접속을 확립 하려고 합니다. 통신 상대의 소켓은 name 그리고 지정됩니다. name (은)는 소켓 통신 공간내의 주소입니다. 각 통신 공간은 name 파라미터를 독자적인 방법으로 해석합니다. 일반적으로, 스트림 소켓이 정상적으로 connect() 할 수 있는 것은 1 회 뿐입니다. 데이터 그램 소켓은 connect() (을)를 여러 차례 사용해 그 연결시키고를 변경할 수 있습니다. 데이터 그램 소켓은, NULL 주소와 같은 무효인 주소에 접속하는 것에 의해 연결시키고를 해제할 수 있습니다.

반환값

에러
connect() (은)는 다음의 경우에 실패합니다.

[EBADF]
    s 하지만 유효한 기술자이지 않습니다.

[ENOTSOCK]
    s 하지만 소켓은 아니고 파일의 기술자입니다.

[EADDRNOTAVAIL]
    지정의 주소가 이 머신에서는 이용할 수 없습니다.

[EAFNOSUPPORT]
    지정의 주소 패밀리내의 주소가 이 소켓에서는 사용할 수 없습니다.

[EISCONN]
    소켓은 이미 접속되고 있습니다.

[ETIMEDOUT]
    접속을 확립하는 일 없이, 타임 아웃 했습니다.

[ECONNREFUSED]
    접속이 강제적으로 거절되었습니다.

[ENETUNREACH]
    이 호스트로부터 그 네트워크에 도달할 수 없습니다.

[EADDRINUSE]
    주소가 이미 사용중입니다.

[EFAULT]
    name 파라미터는 프로세스 address 공간의 외측의 area를 지정해 있습니다.

[EINPROGRESS]
    비블로킹의 소켓으로, 접속이 곧바로는 확립할 수 없었습니다. 소켓에의 기록을 select(2) 그리고 기다리는 것에 의해, 접속 완료를 기다릴 수가 있습니다.

[EALREADY]
    비블로킹의 소켓으로, 이전의 접속의 시도가 아직 완료하고 있지 않습니다.

이후의 에러는, UNIX 도메인의 접속명에 고유합니다. 이러한 에러는, UNIX IPC 도메인의 장래의 버젼에는 적용되지 않을 가능성이 있습니다.

[ENOTDIR]
    패스의 원가요소중에 디렉토리 이외의 것이 포함되어 있습니다.

[ENAMETOOLONG]
    패스명의 원가요소가 255 캐릭터를 넘고 있는지, 또는 패스명 전체가 1023 캐릭터를 넘고 있습니다.

[ENOENT]
    지정의 소켓이 존재하지 않습니다.

[EACCES]
    지정된 패스에는, 검색이 허가되어 있지 않은 디렉토리가 포함되어 있습니다.

[EACCES]
    지정의 소켓에의 기록 액세스가 거절되고 있습니다.

[ELOOP]
    패스명을 변환할 경우에 검출된 기호 연결이 너무 많습니다.

관련 항목
accept(2), getpeername(2), getsockname(2), select(2), socket(2)

역사
connect() 함수는 4.2BSD 그리고 등장했습니다.