CONNECT(2) — NEWS-OS Programmer’s Manual
名称
connect − ソケット上でコネクションを確立する
形式
#include <sys/types.h>
#include <sys/socket.h>
connect(s, name, namelen)
int s;
struct sockaddr ∗name;
int namelen;
解説
パラメータ s はソケットです。 ソケットがタイプ SOCK_DGRAM である場合には、 このコールはソケットに関する peer を 指定することになります。 このアドレスは、 データグラムが送られる送り先のアドレスです。 ソケットがタイプ SOCK_STREAM である場合には、 このコールは別のソケットへのコネクトを 試みます。 相手のソケットは name で指定されますが、 name はそのソケットの通信スペース内のアドレスです。 各通信スペースは、 独自の方法で name パラメタを 解釈します。 一般的に、 stream ソケットは 1度だけ connect することができ、 データグラムソケットは複数回 connect を 使用して送り先を 変更することができます。 datagram ソケットは、 ナルアドレスのような無効なアドレスへコネクトすることによって、 送り先を 解除することができます。
リターン値
コネクトまたは名前の割り当てが成功した場合には、 値 0 が返されます。 そうでない場合には、 −1 が返され、 さらに、 特定のエラーコードが errno に入れられます。
エラー
以下の場合には、 connect は失敗します。
[EBADF] s が有効なディスクリプタではない。
[ENOTSOCK] s がソケットではなく、 ファイルのディスクリプタである。
[EADDRNOTAVAIL] 指定されたアドレスは、 このマシンで使用可能ではない。
[EAFNOSUPPORT] 指定されたアドレスファミリに含まれているアドレスは、 このソケットには使用することができない。
[EISCONN] そのソケットは既にコネクトされている。
[ETIMEDOUT] コネクションの確立が タイムアウトとなってコネクションは確立されなかった。
[ECONNREFUSED] コネクトが強制的に拒絶された。
[ENETUNREACH] そのネットワークには、 このホストからは到達することができない。
[EADDRINUSE] そのアドレスは既に使用されている。
[EFAULT] nameパラメタが、 そのプロセスのアドレススペースの外側の領域を 指定している。
[EINPROGRESS] そのソケットはブロッキングではなく、 即時にコネクトを 完了することはできない。 書き込みのためにソケットを 選択して完了するために、 ソケットを select(2) することが可能である。
[EALREADY] そのソケットはブロッキングではなく、 直前のコネクトの試みがまだ完了していない。
以下のエラーは、 UNIXドメイン内でのコネクトに固有なものです。 これらのエラーは、 UNIX IPCドメインの今後のバージョンには適用することはできません。
[ENOTDIR] パスプレフィックスの構成要素がディレクトリではないものが含まれている。
[EINVAL] パス名に最上位ビットのセットされたキャラクタが含まれている。 (NEWS-OSでは、このエラーはおきない。)
[ENAMETOOLONG]
パス名の1構成要素が255バイトを 超えている、 またはパス名全体が1023バイトを 超えている。
[ENOENT] 指定されたソケットが存在していない。
[EACCES] パスプレフィックスの構成要素についてサーチパーミッションが 許可されていないものがある。
[EACCES] 指定されたソケットへの書き込みアクセスが否定されている。
[ELOOP] パス名の処理で遭遇したシンボリックリンクの数が多すぎる。
関連事項
accept(2), select(2), socket(2), getsockname(2)
NEWS-OSRelease 4.1C