スポンサーリンク

CONNECT(2) FreeBSD システムコールマニュアル CONNECT(2)

名称

connect − ソケット上で接続を開始する

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <sys/types.h>
#include <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() は、処理が成功すると値 0 を返します。そうでない場合、値 -1 が返され、グローバル変数 errno が設定されてエラーを示します。

エラー

connect() システムコールは次の場合に失敗します:

       [EBADF]

s 引数が有効な記述子でありません。

[ENOTSOCK]
s
引数がソケットではなくファイルの記述子です。

[EADDRNOTAVAIL]
指定のアドレスがこのマシンでは利用できません。

[EAFNOSUPPORT]
指定のアドレスファミリ内のアドレスがこのソケットでは使 用できません。

[EISCONN]
ソケットは既に接続されています。

[ETIMEDOUT]
接続を確立することなく、タイムアウトしました。

[ECONNREFUSED]
接続が強制的に拒絶されました。

[ENETUNREACH]
このホストからそのネットワークに到達できません。

[EHOSTUNREACH]
このホストからそのリモートホストに到達できません。

[EADDRINUSE]
アドレスが既に使用中です。

[EFAULT]
name
引数はプロセスアドレス空間の外側の領域を指定して います。

[EINPROGRESS]
非ブロッキングのソケットで、接続がすぐには確立できませ んでした。ソケットへの書込みを select(2) で待つことに よって、接続完了を待つことができます。

[EINTR]
接続の試みは、シグナルの配信により割り込まれました。そ の接続は EINPROGRESS の場合と同じようにバックグラウン ドで確立されます。

[EALREADY]
前の接続の試みが未だ完了していません。

[EACCES]
ブロードキャストの機能を提供していないソケットを通し て、 (INADDR_BROADCAST 定数または INADDR_NONE 戻り値を 通して獲得した) ブロードキャストアドレスに接続しようと しています。

以降のエラーは、UNIX ドメインの接続名に固有です。これらのエラーは、UNIX IPC ドメインの将来のバージョンには適用されない可能性があります。

[ENOTDIR]
パスの構成要素中にディレクトリ以外のものが含まれていま す。

[ENAMETOOLONG]
パス名の構成要素が 255 文字を越えているか、またはパス 名全体が 1023 文字を越えています。

[ENOENT]
指定のソケットが存在しません。

[EACCES]
指定されたパスには、検索が許可されていないディレクトリ が含まれています。

[EACCES]
指定のソケットへの書込みアクセスが拒絶されています。

[ELOOP]
パス名を変換するときに検出されたシンボリックリンクが多 すぎます。

関連項目

accept(2), getpeername(2), getsockname(2), select(2), socket(2)

歴史

connect() システムコールは 4.2BSD で登場しました。

FreeBSD 10.0 June 4, 1993 FreeBSD 10.0

スポンサーリンク