標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
XPG4.2 |
両方 |
#define _XOPEN_SOURCE_EXTENDED 1
#include <sys/socket.h>
int getsockname(int socket, struct sockaddr *__restrict__ name,
socklen_t *__restrict__ namelen);
#define _OE_SOCKETS
#include <sys/types.h>
#include <sys/socket.h>
int getsockname(int socket, struct sockaddr *name,
int *namelen);
getsockname() 呼び出しは、socket パラメーターで使用されたソケットの現行名を、name エラー・コードで指定される構造体へ保管します。バインドされているソケットへのアドレスを戻します。ソケットがアドレスにバインドされていない場合は、呼び出しはファミリー・セットと一緒に戻し、構造体セットの残りはゼロに設定 されます。例えば、インターネット・ドメイン内にアンバインドされたソケットがあると、sockaddr_in 構造体を指すための名前が sin_family フィールドと共に AF_INET に設定され、その他のフィールドはゼロに設定されます。
getsockname() 呼び出しは、通常、ソケットが暗黙的にポートへバインドされた後、ソケットへ割り当てられたポ ートを見つけるのに使用されます。例えば、アプリケーションでは、bind() を前に呼び出さなくて も、connect() を呼び出すことができます。この場合、connect() 呼び出しは、ポートをソケットに割り当てるのに必要なバインディング を完了します。この割り当ては、getsockname() を呼び出して見つけることができます。
AF_INET6 ドメインのソケット: AF_INET6 ソケットでは、アドレスは sockaddr_6 アドレス構造体に戻されます。sockaddr_in6 構造体は、ヘッダー・ファイル netinet/in.h の中に 定義されます。
正常に実行された場合、getsockname() は 0 を戻します。