GETSERVENT(3N) — NEWS-OS Programmer’s Manual
名称
getservent, getservbyport, getservbyname, setservent, endservent − サービスエントリを獲得する
形式
#include <netdb.h>
struct servent ∗getservent()
struct servent ∗getservbyname(name, proto)
char ∗name, ∗proto;
struct servent ∗getservbyport(port, proto)
int port; char ∗proto;
setservent(stayopen)
int stayopen
endservent()
解説
getservent、 getservbyname および getservbyport は、それぞれネットワークサービスデータベース、 /etc/services 中の行の broken-out フィールドを含んだ次の構造体をもつ オブジェクトを指すポインタを返します。
struct servent {
char ∗s_name; /∗ サービスの公式名 ∗/
char ∗∗s_aliases; /∗ 別名リスト ∗/
int s_port; /∗ ポート番号 ∗/
char ∗s_proto; /∗ 使用するプロトコル ∗/
};
この構造体のメンバは次の通りです。
s_name サービスの公式名。
s_aliases サービスの名のゼロで終わるリスト。
s_port サービスが存在しているポートの番号。 ポート番号は、ネットワークのバイトオーダで返されます。
s_proto サービスと交信するとき使用するプロトコル名。
getservent は、ファイルの次の行を読み、必要に応じてファイルをオープンします。
setservent は、ファイルをオープンし、ポインタをファイルの先頭に戻します。 stayopen フラグがゼロでない値の場合、ネットデータベースは、 getservbyname または getservbyport への各呼び出しの後で、クローズされません。
endservent は、ファイルをクローズします。
getservbyname と getservbyport は、一致するプロトコル名またはポート番号が見つかるまで、または、 EOF に出くわすまで、ファイルの始めから順次検索を行います。 プロトコル名も供給される場合は(NULL でない)、検索は、 そのプロトコルにも一致しなければなりません。
関連ファイル
/etc/services
関連事項
getprotoent(3N), services(5), nis.conf(5), ypserv(8)
診断
EOF またはエラー時には、 ナル ポインタ (0) が返されます。
バグ
すべての情報が静的領域に含まれるので、 それをセーブした場合は、コピーしなければなりません。 ポート番号が 32 ビット内に収まると期待するのは、きびしいでしょう。
NEWS-OSRelease 4.2.1R