]> gcc.gnu.org Git - gcc.git/blob - libjava/java/net/InetSocketAddress.java
2003-01-14 Michael Koch <konqueror@gmx.de>
[gcc.git] / libjava / java / net / InetSocketAddress.java
1 /* InetSocketAddress.java --
2 Copyright (C) 2002 Free Software Foundation, Inc.
3
4 This file is part of GNU Classpath.
5
6 GNU Classpath is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
10
11 GNU Classpath is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with GNU Classpath; see the file COPYING. If not, write to the
18 Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19 02111-1307 USA.
20
21 Linking this library statically or dynamically with other modules is
22 making a combined work based on this library. Thus, the terms and
23 conditions of the GNU General Public License cover the whole
24 combination.
25
26 As a special exception, the copyright holders of this library give you
27 permission to link this library with independent modules to produce an
28 executable, regardless of the license terms of these independent
29 modules, and to copy and distribute the resulting executable under
30 terms of your choice, provided that you also meet, for each linked
31 independent module, the terms and conditions of the license of that
32 module. An independent module is a module which is not derived from
33 or based on this library. If you modify this library, you may extend
34 this exception to your version of the library, but you are not
35 obligated to do so. If you do not wish to do so, delete this
36 exception statement from your version. */
37
38 package java.net;
39
40 /**
41 * InetSocketAddress instances represent socket addresses
42 * in the java.nio package. They encapsulate a InetAddress and
43 * a port number.
44 *
45 * @since 1.4
46 */
47
48 public class InetSocketAddress extends SocketAddress
49 {
50 /**
51 * Compatible with JDK 1.4+
52 */
53 private static final long serialVersionUID = 5076001401234631237L;
54
55 String hostname;
56 InetAddress addr;
57 int port;
58
59 /**
60 * Constructs an InetSocketAddress instance.
61 *
62 * @param addr Address of the socket
63 * @param port Port if the socket
64 *
65 * @exception IllegalArgumentException If the port number is illegel
66 */
67 public InetSocketAddress(InetAddress addr, int port)
68 throws IllegalArgumentException
69 {
70 if (port < 0 || port > 65535)
71 throw new IllegalArgumentException();
72
73 this.addr = addr;
74 this.port = port;
75 this.hostname = addr.getHostName ();
76 }
77
78 /**
79 * Constructs an InetSocketAddress instance.
80 *
81 * @param port Port if the socket
82 *
83 * @exception IllegalArgumentException If the port number is illegal
84 */
85 public InetSocketAddress(int port)
86 throws IllegalArgumentException
87 {
88 if (port < 0 || port > 65535)
89 throw new IllegalArgumentException();
90
91 this.port = port;
92
93 try
94 {
95 byte[] any = { 0, 0, 0, 0 };
96 this.addr = InetAddress.getByAddress (any);
97 this.hostname = "0.0.0.0";
98 }
99 catch (UnknownHostException e)
100 {
101 this.addr = null;
102 this.hostname = "";
103 }
104 }
105
106
107 /**
108 * Constructs an InetSocketAddress instance.
109 *
110 * @param addr Address of the socket
111 * @param port Port if the socket
112 *
113 * @exception IllegalArgumentException If the port number is illegal
114 */
115 public InetSocketAddress(String hostname, int port)
116 throws IllegalArgumentException
117 {
118 if (port < 0 || port > 65535)
119 throw new IllegalArgumentException();
120
121 this.port = port;
122 this.hostname = hostname;
123
124 try
125 {
126 this.addr = InetAddress.getByName(hostname);
127 }
128 catch (Exception e) // UnknownHostException, SecurityException
129 {
130 this.addr = null;
131 }
132 }
133
134 /**
135 * Test if obj is a <code>InetSocketAddress</code> and
136 * has the same address and port
137 */
138 public final boolean equals (Object obj)
139 {
140 // InetSocketAddress objects are equal when addr and port are equal.
141 // The hostname may differ.
142
143 if (obj instanceof InetSocketAddress)
144 {
145 InetSocketAddress a = (InetSocketAddress) obj;
146 return addr.equals(a.addr) && a.port == port;
147 }
148
149 return false;
150 }
151
152 /**
153 * Returns the <code>InetAddress</code> or
154 * <code>null</code> if its unresolved
155 */
156 public final InetAddress getAddress()
157 {
158 return addr;
159 }
160
161 /**
162 * Returns <code>hostname</code>
163 */
164 public final String getHostName()
165 {
166 return hostname;
167 }
168
169 /**
170 * Returns the <code>port</code>
171 */
172 public final int getPort()
173 {
174 return port;
175 }
176
177 /**
178 * Returns the hashcode of the <code>InetSocketAddress</code>
179 */
180 public final int hashCode()
181 {
182 return port + addr.hashCode();
183 }
184
185 /**
186 * Checks wether the address has been resolved or not
187 */
188 public final boolean isUnresolved()
189 {
190 return addr == null;
191 }
192
193 /**
194 * Returns the <code>InetSocketAddress</code> as string
195 */
196 public String toString()
197 {
198 return addr + ":" + port;
199 }
200 }
This page took 0.047536 seconds and 5 git commands to generate.