BINDRESVPORT
Section: Linux Programmer's Manual (3)
Updated: 2008-12-03
Index
JM Home Page
roff page
名前
bindresvport - ソケットを特権 IP ポートにバインドする
書式
#include <sys/types.h>
#include <netinet/in.h>
int bindresvport(int sockfd, struct sockaddr_in *sin);
説明
bindresvport()
は、ソケット・ディスクリプタを特権無名 (privileged anonymous) IP ポートに
バインドするのに使う。特権無名 IP ポートとは、
ポート番号が 512 から 1023 の範囲から任意に選択されるポートである。
bindresvport()
によって実行された
bind(2)
が成功し、
sin
が NULL 以外の場合、実際に割り当てられたポート番号が
sin->sin_port
に入れて返される。
sin
には NULL を指定することもでき、その場合には
sin->sin_family
は暗黙のうちに
AF_INET
とみなされる。
しかし、この場合には、
bindresvport()
は実際に割り当てられたポート番号を返す手段を持たない
(割り当てられたポート番号は、後で
getsockname(2)
を使って取得できる)。
返り値
bindresvport()
は成功すると 0 を返す。それ以外の場合、-1 を返し、
errno
にエラーの原因を示す値を設定する。
エラー
bindresvport()
は
bind(2)
と同じ原因で失敗する可能性がある。
さらに、以下のエラーが発生することがある:
- EACCES
-
呼び出し元がスーパーユーザの特権を持っていなかった (より正確に言うと、
CAP_NET_BIND_SERVICE
ケーパビリティが必要である)。
- EADDRINUSE
-
全ての特権ポートが使用中である。
- EAFNOSUPPORT (glibc 2.7 以前では EPFNOSUPPORT)
-
sin
が NULL 以外で、かつ
sin->sin_family
が
AF_INET
でなかった。
準拠
POSIX.1-2001 にはない。
BSD, Solaris およびその他の多くのシステムに存在する。
注意
bindresvport()
のいくつかの実装と異なり、glibc の実装では呼び出し元が
sin->sin_port
で渡した値はどんな値であっても無視される。
関連項目
bind(2),
getsockname(2)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- 準拠
-
- 注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 03:26:37 GMT, April 25, 2010