Manpages

名 前

getsockname − ソ ケ ッ ト の 名 前 を 取 得 す る

書 式

#include <sys/socket.h>

int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

説 明

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

返 り 値

成 功 し た 場 合 に は ゼ ロ が 返 さ れ る 。 エ ラ ー 時 に は −1 が 返 さ れ 、 errno が 適 切 に 設 定 さ れ る 。

エ ラ ー

EBADF 引 き 数

sockfd は 有 効 な デ ィ ス ク リ プ タ ー で な い 。

EFAULT 引 き 数

addr の 指 し て い る メ モ リ ー が プ ロ セ ス の ア ド レ ス 空 間 の 有 効 な

部 分 で は な い 。

EINVAL

addrlen が 不 正 で あ る (例 え ば 、 負 で 場 合 な ど )。

ENOBUFS 処 理 を す る だ け の 十 分 な リ ソ ー ス が シ ス テ ム に 無 い 。
ENOTSOCK
引 き 数 sockfd が ソ ケ ッ ト で は な く フ ァ イ ル で あ る 。

準 拠

SVr4, 4.4BSD (getsockname() 関 数 は 4.2BSD で 追 加 さ れ た ), POSIX.1−2001.

注 意

getsockname() の 三 番 目 の 引 き 数 は (4.x BSD や libc4, libc5 と 同 様 に ) 実 際 に は int * で あ る 。 glibc で も 使 わ れ て い る 現 在 の socklen_t に 関 し て 、 POSIX に は 少 し 混 乱 が あ る 。 詳 し く は accept(2) を 参 照 の こ と 。

関 連 項 目

bind(2), socket(2), getifaddrs(3), ip(7), socket(7), unix(7)

こ の 文 書 に つ い て

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