OSDN Git Service

(split) Convert release and draft pages to UTF-8.
[linuxjm/LDP_man-pages.git] / release / man3 / rtime.3
1 .\" Copyright 2003 walter harms (walter.harms@informatik.uni-oldenburg.de)
2 .\" Distributed under GPL
3 .\" Modified 2003-04-04 Walter Harms
4 .\" <walter.harms@informatik.uni-oldenburg.de>
5 .\"
6 .\" Slightly polished, aeb, 2003-04-06
7 .\"
8 .\" Japanese Version Copyright (c) 2004 Yuichi SATO
9 .\"         all rights reserved.
10 .\" Translated Thu Sep  2 07:40:48 JST 2004
11 .\"         by Yuichi SATO <ysato444@yahoo.co.jp>
12 .\"
13 .TH RTIME 3 2010-02-25 "GNU" "Linux Programmer's Manual"
14 .SH 名前
15 rtime \- リモートマシンから時刻を取得する
16 .SH 書式
17 .nf
18 .B "#include <rpc/des_crypt.h>"
19 .sp
20 .BI "int rtime(struct sockaddr_in *" addrp ", struct rpc_timeval *" timep ,
21 .BI "          struct rpc_timeval *" timeout );
22 .fi
23 .SH 説明
24 この関数は RFC\ 868 に記述されているタイムサーバプロトコルを使用し、
25 リモートマシンから時刻を取得する。
26 .LP
27 タイムサーバプロトコルは 00:00:00 UTC, 1 Jan 1900 から秒数を提供するので、
28 この関数は適切な定数値を引くことにより、
29 提供された値を Unix における時刻紀元 (1970-01-01 00:00:00 +0000 (UTC))
30 から秒数に変換する。
31 .LP
32 .I timeout
33 が NULL でない場合、udp/time ソケット (ポート 37) が使用される。
34 それ以外の場合、tcp/time ソケット (ポート 37) が使用される。
35 .SH 返り値
36 成功した場合は、0 が返されて、得られた 32 ビットの時刻値は
37 .I timep\->tv_sec
38 に格納される。
39 エラーの場合は、\-1 が返されて、
40 .I errno
41 が適切に設定される。
42 .SH エラー
43 内部で使用している関数
44 .RB ( sendto (2),
45 .BR poll (2),
46 .BR recvfrom (2),
47 .BR connect (2),
48 .BR read (2))
49 の全てのエラーが起こる可能性がある。
50 更に次のエラーが起こる可能性がある:
51 .TP
52 .B EIO
53 返されたバイト数が 4 バイトでない。
54 .TP
55 .B ETIMEDOUT
56 timeout で定義された待ち時間の期限が切れた。
57 .SH 注意
58 IPv4 のみがサポートされている。
59 .LP
60 .I in.timed
61 のバージョンによっては TCP しかサポートしていないものもある。
62 .I use_tcp
63 を 1 に設定して、例にあるプログラムを試すこと。
64 .LP
65 libc5 はプロトタイプ
66 .br
67 int rtime(struct sockaddr_in *, struct timeval *, struct timeval *);
68 .br
69 を使い、
70 .I <rpc/auth_des.h>
71 の代わりに
72 .I <sys/time.h>
73 を必要とする。
74 .SH バグ
75 glibc 2.2.5 以前の
76 .BR rtime ()
77 は、64 ビットマシンで正確に動作しない。
78 .SH 例
79 この例ではポート 37 がアップされてオープンされている必要がある。
80 .I /etc/inetd.conf
81 の time エントリがコメントアウトされていないことを確認してほしい。
82 .br
83 このプログラムは "linux" というコンピュータに接続する。
84 "localhost" を使った場合は動作しない。
85 結果はコンピュータ "linux" のローカル時刻である。
86 .sp
87 .nf
88 #include <stdio.h>
89 #include <stdlib.h>
90 #include <errno.h>
91 #include <string.h>
92 #include <time.h>
93 #include <rpc/auth_des.h>
94 #include <netdb.h>
95
96 int use_tcp = 0;
97 char *servername = "linux";
98
99 int
100 main(void)
101 {
102     struct sockaddr_in name;
103     struct rpc_timeval time1 = {0,0};
104     struct rpc_timeval timeout = {1,0};
105     struct hostent *hent;
106     int ret;
107
108     memset((char *) &name, 0, sizeof(name));
109     sethostent(1);
110     hent = gethostbyname(servername);
111     memcpy((char *) &name.sin_addr, hent\->h_addr, hent\->h_length);
112
113     ret = rtime(&name, &time1, use_tcp ? NULL : &timeout);
114     if (ret < 0)
115         perror("rtime error");
116     else
117         printf("%s\\n", ctime((time_t *) &time1.tv_sec));
118
119     exit(EXIT_SUCCESS);
120 }
121 .fi
122 .SH 関連項目
123 .\" .BR netdate (1),
124 .BR ntpdate (1),
125 .\" .BR rdate (1),
126 .BR inetd (8)