KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > net > TimeTCPClient


1 /*
2  * Copyright 2001-2005 The Apache Software Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.apache.commons.net;
17
18 import java.io.IOException JavaDoc;
19 import java.util.Date JavaDoc;
20 import java.io.DataInputStream JavaDoc;
21
22 /***
23  * The TimeTCPClient class is a TCP implementation of a client for the
24  * Time protocol described in RFC 868. To use the class, merely
25  * establish a connection with
26  * {@link org.apache.commons.net.SocketClient#connect connect }
27  * and call either {@link #getTime getTime() } or
28  * {@link #getDate getDate() } to retrieve the time, then
29  * call {@link org.apache.commons.net.SocketClient#disconnect disconnect }
30  * to close the connection properly.
31  * <p>
32  * <p>
33  * @author Daniel F. Savarese
34  * @see TimeUDPClient
35  ***/

36
37 public final class TimeTCPClient extends SocketClient
38 {
39     /*** The default time port. It is set to 37 according to RFC 868. ***/
40     public static final int DEFAULT_PORT = 37;
41
42     /***
43      * The number of seconds between 00:00 1 January 1900 and
44      * 00:00 1 January 1970. This value can be useful for converting
45      * time values to other formats.
46      ***/

47     public static final long SECONDS_1900_TO_1970 = 2208988800L;
48
49     /***
50      * The default TimeTCPClient constructor. It merely sets the default
51      * port to <code> DEFAULT_PORT </code>.
52      ***/

53     public TimeTCPClient ()
54     {
55         setDefaultPort(DEFAULT_PORT);
56     }
57
58     /***
59      * Retrieves the time from the server and returns it. The time
60      * is the number of seconds since 00:00 (midnight) 1 January 1900 GMT,
61      * as specified by RFC 868. This method reads the raw 32-bit big-endian
62      * unsigned integer from the server, converts it to a Java long, and
63      * returns the value.
64      * <p>
65      * The server will have closed the connection at this point, so you should
66      * call
67      * {@link org.apache.commons.net.SocketClient#disconnect disconnect }
68      * after calling this method. To retrieve another time, you must
69      * initiate another connection with
70      * {@link org.apache.commons.net.SocketClient#connect connect }
71      * before calling <code> getTime() </code> again.
72      * <p>
73      * @return The time value retrieved from the server.
74      * @exception IOException If an error occurs while fetching the time.
75      ***/

76     public long getTime() throws IOException JavaDoc
77     {
78         DataInputStream JavaDoc input;
79         input = new DataInputStream JavaDoc(_input_);
80         return (long)(input.readInt() & 0xffffffffL);
81     }
82
83     /***
84      * Retrieves the time from the server and returns a Java Date
85      * containing the time converted to the local timezone.
86      * <p>
87      * The server will have closed the connection at this point, so you should
88      * call
89      * {@link org.apache.commons.net.SocketClient#disconnect disconnect }
90      * after calling this method. To retrieve another time, you must
91      * initiate another connection with
92      * {@link org.apache.commons.net.SocketClient#connect connect }
93      * before calling <code> getDate() </code> again.
94      * <p>
95      * @return A Date value containing the time retrieved from the server
96      * converted to the local timezone.
97      * @exception IOException If an error occurs while fetching the time.
98      ***/

99     public Date JavaDoc getDate() throws IOException JavaDoc
100     {
101         return new Date JavaDoc((getTime() - SECONDS_1900_TO_1970)*1000L);
102     }
103
104 }
105
106
Popular Tags