connect(2) FreeBSD 一般コマンドマニュアル

connect

前のページ 上に戻る 次のページ

connect




書式

     #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() は connect システムコールとして実装
     されています。

     スレッドライブラリでは、 connect システムコールは _thread_sys_connect()
     にアセンブルされ、 connect() は、読み書きについて s をロックしてから
     _thread_sys_connect() を呼び出す関数として実装されています。
     _thread_sys_connect() の呼び出しがブロックする場合、コンテキストスイッチ
     が実行されます。戻る前に connect() は s をアンロックします。


戻り値

     関数 connect() は、処理が成功すると値 0 を返します。そうでない場合、値 -1
     が返され、グローバル変数 errno が設定されてエラーを示します。


エラー

     connect() は次の場合に失敗します。

     [EBADF]            s が有効な記述子でありません。

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

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

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

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

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

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

     以降のエラーは、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 4.4                      June 4, 1993                      FreeBSD 4.4

ABELNET VPSサービス