getsockname(2) FreeBSD 一般コマンドマニュアル

getsockname

前のページ 上に戻る 次のページ

getsockname




書式

     #include <sys/types.h>
     #include <sys/socket.h>

     int
     getsockname(int s, struct sockaddr *name, socklen_t *namelen);


解説

     getsockname() は指定のソケットについて現在の name を返します。 namelen パ
     ラメータは、 name が指す空間の量を示すように初期化しておく必要がありま
     す。戻る時には返された名前の実際のサイズ (バイト単位) が入ります。


実装に関する注

     非スレッドライブラリでは、 getsockname() は getsockname システムコールと
     して実装されています。

     スレッドライブラリでは、 getsockname システムコールは
     _thread_sys_getsockname() にアセンブルされ、 getsockname() は、読み書きに
     ついて fd をロックしてから _thread_sys_getsockname() を呼び出す関数として
     実装されています。戻る前に getsockname() は fd をアンロックします。


戻り値

     関数 getsockname() は、処理が成功すると値 0 を返します。そうでない場合、
     値 -1 が返され、グローバル変数 errno が設定されてエラーを示します。


エラー

     呼び出しは、次の場合を除いて正常に完了します。

     [EBADF]            引数 s が有効な記述子ではありません。

     [ECONNRESET]       接続が通信相手によってリセットされました。

     [ENOTSOCK]         引数 s はソケットではなくファイルです。

     [ENOBUFS]          操作を実行するためにシステム内で利用できるリソースが不
                        足しています。

     [EFAULT]           name パラメータが、プロセスアドレス空間の有効な部分内
                        でないメモリを指しています。


関連項目

     bind(2), getpeername(2), socket(2)


バグ

     UNIX ドメイン内のソケットにバインドされた名前にはアクセスできません。この
     場合 getsockname は、長さが 0 の名前を返します。


歴史

     getsockname() 関数は 4.2BSD ではじめて登場しました。

FreeBSD 4.4                      June 4, 1993                      FreeBSD 4.4

ABELNET VPSサービス