source: trunk/gcc/libjava/java/net/InetSocketAddress.java

Last change on this file was 1389, checked in by bird, 21 years ago

Initial revision

  • Property cvs2svn:cvs-rev set to 1.1
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 5.0 KB
Line 
1/* InetSocketAddress.java --
2 Copyright (C) 2002 Free Software Foundation, Inc.
3
4This file is part of GNU Classpath.
5
6GNU Classpath is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2, or (at your option)
9any later version.
10
11GNU Classpath is distributed in the hope that it will be useful, but
12WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with GNU Classpath; see the file COPYING. If not, write to the
18Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
1902111-1307 USA.
20
21Linking this library statically or dynamically with other modules is
22making a combined work based on this library. Thus, the terms and
23conditions of the GNU General Public License cover the whole
24combination.
25
26As a special exception, the copyright holders of this library give you
27permission to link this library with independent modules to produce an
28executable, regardless of the license terms of these independent
29modules, and to copy and distribute the resulting executable under
30terms of your choice, provided that you also meet, for each linked
31independent module, the terms and conditions of the license of that
32module. An independent module is a module which is not derived from
33or based on this library. If you modify this library, you may extend
34this exception to your version of the library, but you are not
35obligated to do so. If you do not wish to do so, delete this
36exception statement from your version. */
37
38package 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
48public 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}
Note: See TracBrowser for help on using the repository browser.