名前
getsockname - ソケットの名前を取得する
書式
#include <sys/socket.h>
int getsockname(int s, struct sockaddr *name, socklen_t *namelen);
説明
getsockname() は指定したソケットの現在の名前 name を返す。 namelen 引き数には name が指している領域の大きさを指定しておく必要がある。 関数から戻る時には、 namelen には返された name の実際の大きさ (バイト数) が格納される。
返り値
成功した場合 0 を返す。失敗した場合 -1 を返し、 errno をエラーの内容に従って設定する。
エラー
EBADF | 引き数 s が有効なディスクリプタ (descriptor) ではない。 |
EFAULT | 引き数 name の指しているメモリがプロセスのアドレス空間の有効な部分ではない。 |
EINVAL | namelen が不正である (例えば、負で場合など)。 |
ENOBUFS | |
処理をするだけの十分なリソースがシステムに無い。 | |
ENOTSOCK | |
引き数 s がソケットではなくファイルである。 | |
準拠
SVr4, 4.4BSD (getsockname() 関数は 4.2BSD で追加された), POSIX.1-2001.
注意
getsockname() の三番目の引き数は (4.x BSD や libc4, libc5 と同様に) 実際には int * である。 glibc でも使われている現在の socklen_t に関して、POSIX には少し混乱がある。 詳しくは accept(2) を参照のこと。