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 パラメータはプロセスアドレス空間の外側の領域を指定しています。

[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 で登場しました。