133
134 /**
135 * Opens a datagram channel.
136 *
137 * <p> The new channel is created by invoking the {@link
138 * java.nio.channels.spi.SelectorProvider#openDatagramChannel()
139 * openDatagramChannel} method of the system-wide default {@link
140 * java.nio.channels.spi.SelectorProvider} object. The channel will not be
141 * connected.
142 *
143 * <p> The {@link ProtocolFamily ProtocolFamily} of the channel's socket
144 * is platform (and possibly configuration) dependent and therefore unspecified.
145 * The {@link #open(ProtocolFamily) open} allows the protocol family to be
146 * selected when opening a datagram channel, and should be used to open
147 * datagram channels that are intended for Internet Protocol multicasting.
148 *
149 * @return A new datagram channel
150 *
151 * @throws IOException
152 * If an I/O error occurs
153 */
154 public static DatagramChannel open() throws IOException {
155 return SelectorProvider.provider().openDatagramChannel();
156 }
157
158 /**
159 * Opens a datagram channel.
160 *
161 * <p> The {@code family} parameter is used to specify the {@link
162 * ProtocolFamily}. If the datagram channel is to be used for IP multicasting
163 * then this should correspond to the address type of the multicast groups
164 * that this channel will join.
165 *
166 * <p> The new channel is created by invoking the {@link
167 * java.nio.channels.spi.SelectorProvider#openDatagramChannel(ProtocolFamily)
168 * openDatagramChannel} method of the system-wide default {@link
169 * java.nio.channels.spi.SelectorProvider} object. The channel will not be
170 * connected.
171 *
172 * @param family
173 * The protocol family
174 *
175 * @return A new datagram channel
176 *
177 * @throws UnsupportedOperationException
178 * If the specified protocol family is not supported. For example,
179 * suppose the parameter is specified as {@link
180 * java.net.StandardProtocolFamily#INET6 StandardProtocolFamily.INET6}
181 * but IPv6 is not enabled on the platform.
182 * @throws IOException
183 * If an I/O error occurs
184 *
185 * @since 1.7
186 */
187 public static DatagramChannel open(ProtocolFamily family) throws IOException {
188 return SelectorProvider.provider().openDatagramChannel(requireNonNull(family));
189 }
190
191 /**
192 * Returns an operation set identifying this channel's supported
193 * operations.
194 *
195 * <p> Datagram channels support reading and writing, so this method
196 * returns {@code (}{@link SelectionKey#OP_READ} {@code |} {@link
197 * SelectionKey#OP_WRITE}{@code )}.
198 *
199 * @return The valid-operation set
200 */
201 public final int validOps() {
202 return (SelectionKey.OP_READ
203 | SelectionKey.OP_WRITE);
204 }
612 /**
613 * {@inheritDoc}
614 * <p>
615 * If there is a security manager set, its {@code checkConnect} method is
616 * called with the local address and {@code -1} as its arguments to see
617 * if the operation is allowed. If the operation is not allowed,
618 * a {@code SocketAddress} representing the
619 * {@link java.net.InetAddress#getLoopbackAddress loopback} address and the
620 * local port of the channel's socket is returned.
621 *
622 * @return The {@code SocketAddress} that the socket is bound to, or the
623 * {@code SocketAddress} representing the loopback address if
624 * denied by the security manager, or {@code null} if the
625 * channel's socket is not bound
626 *
627 * @throws ClosedChannelException {@inheritDoc}
628 * @throws IOException {@inheritDoc}
629 */
630 @Override
631 public abstract SocketAddress getLocalAddress() throws IOException;
632
633 }
|
133
134 /**
135 * Opens a datagram channel.
136 *
137 * <p> The new channel is created by invoking the {@link
138 * java.nio.channels.spi.SelectorProvider#openDatagramChannel()
139 * openDatagramChannel} method of the system-wide default {@link
140 * java.nio.channels.spi.SelectorProvider} object. The channel will not be
141 * connected.
142 *
143 * <p> The {@link ProtocolFamily ProtocolFamily} of the channel's socket
144 * is platform (and possibly configuration) dependent and therefore unspecified.
145 * The {@link #open(ProtocolFamily) open} allows the protocol family to be
146 * selected when opening a datagram channel, and should be used to open
147 * datagram channels that are intended for Internet Protocol multicasting.
148 *
149 * @return A new datagram channel
150 *
151 * @throws IOException
152 * If an I/O error occurs
153 *
154 * @see <a href="../../net/doc-files/net-properties.html#Ipv4IPv6">
155 * java.net.preferIPv4Stack</a> system property
156 */
157 public static DatagramChannel open() throws IOException {
158 return SelectorProvider.provider().openDatagramChannel();
159 }
160
161 /**
162 * Opens a datagram channel.
163 *
164 * <p> The {@code family} parameter is used to specify the {@link
165 * ProtocolFamily}. If the datagram channel is to be used for IP multicasting
166 * then this should correspond to the address type of the multicast groups
167 * that this channel will join.
168 *
169 * <p> The new channel is created by invoking the {@link
170 * java.nio.channels.spi.SelectorProvider#openDatagramChannel(ProtocolFamily)
171 * openDatagramChannel} method of the system-wide default {@link
172 * java.nio.channels.spi.SelectorProvider} object. The channel will not be
173 * connected.
174 *
175 * @apiNote <a href="package-summary.html#unixdomain">Unix domain</a> sockets
176 * are not supported by DatagramChannel.
177 *
178 * @param family
179 * The protocol family
180 *
181 * @return A new datagram channel
182 *
183 * @throws UnsupportedOperationException
184 * If the specified protocol family is not supported. For example,
185 * suppose the parameter is specified as {@link
186 * java.net.StandardProtocolFamily#INET6 StandardProtocolFamily.INET6}
187 * but IPv6 is not enabled on the platform.
188 * @throws IOException
189 * If an I/O error occurs
190 *
191 * @see <a href="../../net/doc-files/net-properties.html#Ipv4IPv6">
192 * java.net.preferIPv4Stack</a> system property
193 *
194 * @since 1.7
195 */
196 public static DatagramChannel open(ProtocolFamily family) throws IOException {
197 return SelectorProvider.provider().openDatagramChannel(requireNonNull(family));
198 }
199
200 /**
201 * Returns an operation set identifying this channel's supported
202 * operations.
203 *
204 * <p> Datagram channels support reading and writing, so this method
205 * returns {@code (}{@link SelectionKey#OP_READ} {@code |} {@link
206 * SelectionKey#OP_WRITE}{@code )}.
207 *
208 * @return The valid-operation set
209 */
210 public final int validOps() {
211 return (SelectionKey.OP_READ
212 | SelectionKey.OP_WRITE);
213 }
621 /**
622 * {@inheritDoc}
623 * <p>
624 * If there is a security manager set, its {@code checkConnect} method is
625 * called with the local address and {@code -1} as its arguments to see
626 * if the operation is allowed. If the operation is not allowed,
627 * a {@code SocketAddress} representing the
628 * {@link java.net.InetAddress#getLoopbackAddress loopback} address and the
629 * local port of the channel's socket is returned.
630 *
631 * @return The {@code SocketAddress} that the socket is bound to, or the
632 * {@code SocketAddress} representing the loopback address if
633 * denied by the security manager, or {@code null} if the
634 * channel's socket is not bound
635 *
636 * @throws ClosedChannelException {@inheritDoc}
637 * @throws IOException {@inheritDoc}
638 */
639 @Override
640 public abstract SocketAddress getLocalAddress() throws IOException;
641 }
|