Scroll to navigation

GETPEERNAME(2) Linux Programmer's Manual GETPEERNAME(2)

名前

getpeername - 接続している相手ソケットの名前を取得する

書式

#include <sys/socket.h>
 
int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

説明

getpeername() は、ソケット(socket) sockfd に接続している相手のアドレスを、 addr が指すバッファに格納して返す。 addrlen 引き数は、 addr が指している領域のサイズに初期化しておかなければならない。 関数が返る時には、 addrlen には実際に返された名前のサイズが (バイト単位で) 格納される。 提供されたバッファが小さすぎた場合には、名前は切り詰められる。
 
渡されたバッファが小さ過ぎた場合は、返されるアドレスの末尾が切り詰められる。 この場合には、 addrlen には、呼び出し時に指定された値よりも大きな値が格納される。

返り値

成功した場合は 0 が返される。エラーの場合は -1 が返され、 errno が適切に設定される。

エラー

EBADF
引き数 sockfd が有効なディスクリプタでない。
EFAULT
addr 引き数の指しているメモリが有効なプロセスのアドレス空間の 一部でない。
EINVAL
addrlen が不正である (例えば、負で場合など)。
ENOBUFS
この操作を行なうのに十分な資源がシステムに存在しない。
ENOTCONN
ソケットが接続していない。
ENOTSOCK
引き数 sockfd がソケットでなくてファイルである。

準拠

SVr4, 4.4BSD ( getpeername() 関数は 4.2BSD で登場した), POSIX.1-2001.

注意

getpeername() の三番目の引き数は実際には `int *' である (4.x BSD, libc4, libc5 では このようになっている)。 POSIX では紆余曲折を経て現在の socklen_t になっており、 glibc でも socklen_t を使っている。 accept(2) も参照のこと。

関連項目

accept(2), bind(2), getsockname(2), ip(7), socket(7), unix(7)

この文書について

この man ページは Linux man-pages プロジェクトのリリース 3.41 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
2008-12-03 Linux