aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/net
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/net')
-rw-r--r--libjava/java/net/ContentHandler.java77
-rw-r--r--libjava/java/net/DatagramPacket.java189
-rw-r--r--libjava/java/net/MulticastSocket.java156
3 files changed, 372 insertions, 50 deletions
diff --git a/libjava/java/net/ContentHandler.java b/libjava/java/net/ContentHandler.java
index 59bdb1e..a0ed737 100644
--- a/libjava/java/net/ContentHandler.java
+++ b/libjava/java/net/ContentHandler.java
@@ -1,29 +1,80 @@
-// ContentHandler.java - Superclass of classes that read from a URLConnection.
+/* ContentHandler.java -- Abstract class for handling content from URL's
+ Copyright (C) 1998, 1999 2000, 2001 Free Software Foundation, Inc.
-/* Copyright (C) 1999 Free Software Foundation
+This file is part of GNU Classpath.
- This file is part of libgcj.
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
package java.net;
import java.io.IOException;
/**
- * @author Warren Levy <warrenl@cygnus.com>
- * @date March 5, 1999.
- */
-
-/**
* Written using on-line Java Platform 1.2 API Specification, as well
* as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
* Status: Believed complete and correct.
*/
+/**
+ * This is an abstract class that is the superclass for classes that read
+ * objects from URL's. Calling the <code>getContent()</code> method in the
+ * <code>URL</code> class or the <code>URLConnection</code> class will cause
+ * an instance of a subclass of <code>ContentHandler</code> to be created for
+ * the MIME type of the object being downloaded from the URL. Thus, this
+ * class is seldom needed by applications/applets directly, but only
+ * indirectly through methods in other classes.
+ *
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ * @author Warren Levy <warrenl@cygnus.com>
+ */
public abstract class ContentHandler
{
- public abstract Object getContent(URLConnection urlc) throws IOException;
-}
+
+/*************************************************************************/
+
+/*
+ * Constructors
+ */
+
+/**
+ * Default, no-argument constructor.
+ */
+public ContentHandler() { }
+
+/*************************************************************************/
+
+/**
+ * This method reads from the <code>InputStream</code> of the passed in URL
+ * connection and uses the data downloaded to create an <code>Object</code>
+ * represening the content. For example, if the URL is pointing to a GIF
+ * file, this method might return an <code>Image</code> object. This method
+ * must be implemented by subclasses.
+ *
+ * @param urlc A <code>URLConnection</code> object to read data from.
+ *
+ * @return An object representing the data read
+ *
+ * @exception IOException If an error occurs
+ */
+public abstract Object getContent(URLConnection urlc) throws IOException;
+
+} // class ContentHandler
diff --git a/libjava/java/net/DatagramPacket.java b/libjava/java/net/DatagramPacket.java
index b08f673..3e16628 100644
--- a/libjava/java/net/DatagramPacket.java
+++ b/libjava/java/net/DatagramPacket.java
@@ -1,35 +1,99 @@
-// DatagramPacket.java - Represents packets in a connectionless protocol.
+/* DatagramPacket.java -- Class to model a packet to be sent via UDP
+ Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
-/* Copyright (C) 1999, 2000 Free Software Foundation
+This file is part of GNU Classpath.
- This file is part of libgcj.
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
-package java.net;
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
-/**
- * @author Warren Levy <warrenl@cygnus.com>
- * @date April 28, 1999.
- */
+package java.net;
-/**
+/*
* Written using on-line Java Platform 1.2 API Specification, as well
* as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
* Status: Believed complete and correct.
*/
+/**
+ * This class models a packet of data that is to be sent across the network
+ * using a connectionless protocol such as UDP. It contains the data
+ * to be send, as well as the destination address and port. Note that
+ * datagram packets can arrive in any order and are not guaranteed to be
+ * delivered at all.
+ * <p>
+ * This class can also be used for receiving data from the network.
+ * <p>
+ * Note that for all method below where the buffer length passed by the
+ * caller cannot exceed the actually length of the byte array passed as
+ * the buffer, if this condition is not true, then the method silently
+ * reduces the length value to maximum allowable value.
+ *
+ * Written using on-line Java Platform 1.2 API Specification, as well
+ * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
+ * Status: Believed complete and correct.
+ *
+ * @author Warren Levy <warrenl@cygnus.com>
+ * @author Aarom M. Renn (arenn@urbanophile.com) (Documentation comments)
+ * @date April 28, 1999.
+ */
+
public final class DatagramPacket
{
+/**
+ * The data buffer to send
+ */
private byte[] buffer;
+
+/**
+ * This is the offset into the buffer to start sending from or receiving to.
+ */
private int offset;
+
+/**
+ * The length of the data buffer to send
+ */
private int length;
+
+/**
+ * The address to which the packet should be sent or from which it
+ * was received
+ */
private InetAddress address;
+
+/**
+ * The port to which the packet should be sent or from which it was
+ * was received.
+ */
private int port;
- // JDK1.2
+/**
+ * This method initializes a new instance of <code>DatagramPacket</code>
+ * which has the specified buffer, offset, and length.
+ *
+ * @param buf The buffer for holding the incoming datagram.
+ * @param offset The offset into the buffer to start writing.
+ * @param length The maximum number of bytes to read.
+ *
+ * @since Java 1.2
+ */
public DatagramPacket(byte[] buf, int offset, int length)
{
if (buf == null)
@@ -49,12 +113,30 @@ public final class DatagramPacket
this.port = -1;
}
+/**
+ * Initializes a new instance of <code>DatagramPacket</code> for
+ * receiving packets from the network.
+ *
+ * @param buf A buffer for storing the returned packet data
+ * @param length The length of the buffer (must be <= buf.length)
+ */
public DatagramPacket(byte[] buf, int length)
{
this(buf, 0, length);
}
- // JDK1.2
+/**
+ * Initializes a new instance of <code>DatagramPacket</code> for
+ * transmitting packets across the network.
+ *
+ * @param buf A buffer containing the data to send
+ * @param offset The offset into the buffer to start writing from.
+ * @param len The length of the buffer (must be <= buf.length)
+ * @param addr The address to send to
+ * @param port The port to send to
+ *
+ * @since Java 1.2
+ */
public DatagramPacket(byte[] buf, int offset, int length,
InetAddress address, int port)
{
@@ -79,37 +161,86 @@ public final class DatagramPacket
this.port = port;
}
+/**
+ * Initializes a new instance of <code>DatagramPacket</code> for
+ * transmitting packets across the network.
+ *
+ * @param buf A buffer containing the data to send
+ * @param length The length of the buffer (must be <= buf.length)
+ * @param address The address to send to
+ * @param port The port to send to
+ */
public DatagramPacket(byte[] buf, int length, InetAddress address, int port)
{
this(buf, 0, length, address, port);
}
+/**
+ * Returns the address that this packet is being sent to or, if it was used
+ * to receive a packet, the address that is was received from. If the
+ * constructor that doesn not take an address was used to create this object
+ * and no packet was actually read into this object, then this method
+ * returns <code>null</code>.
+ *
+ * @return The address for this packet.
+ */
public synchronized InetAddress getAddress()
{
return address;
}
+/**
+ * Returns the port number this packet is being sent to or, if it was used
+ * to receive a packet, the port that it was received from. If the
+ * constructor that doesn not take an address was used to create this object
+ * and no packet was actually read into this object, then this method
+ * will return 0.
+ *
+ * @return The port number for this packet
+ */
public synchronized int getPort()
{
return port;
}
+/**
+ * Returns the data buffer for this packet
+ *
+ * @return This packet's data buffer
+ */
public synchronized byte[] getData()
{
return buffer;
}
- // JDK1.2
+/**
+ * This method returns the current offset value into the data buffer
+ * where data will be sent from.
+ *
+ * @return The buffer offset.
+ *
+ * @since Java 1.2
+ */
public synchronized int getOffset()
{
return offset;
}
+/**
+ * Returns the length of the data in the buffer
+ *
+ * @return The length of the data
+ */
public synchronized int getLength()
{
return length;
}
+/**
+ * This sets the address to which the data packet will be transmitted.
+ *
+ * @param addr The destination address
+ */
public synchronized void setAddress(InetAddress iaddr)
{
if (iaddr == null)
@@ -118,6 +249,11 @@ public final class DatagramPacket
address = iaddr;
}
+/**
+ * This sets the port to which the data packet will be transmitted.
+ *
+ * @param port The destination port
+ */
public synchronized void setPort(int iport)
{
if (iport < 0 || iport > 65535)
@@ -126,6 +262,11 @@ public final class DatagramPacket
port = iport;
}
+/**
+ * Sets the data buffer for this packet.
+ *
+ * @param buf The new buffer for this packet
+ */
public synchronized void setData(byte[] buf)
{
// This form of setData requires setLength to be called separately
@@ -136,7 +277,15 @@ public final class DatagramPacket
buffer = buf;
}
- // JDK1.2
+/**
+ * This method sets the data buffer for the packet.
+ *
+ * @param buf The byte array containing the data for this packet.
+ * @param offset The offset into the buffer to start reading data from.
+ * @param length The number of bytes of data in the buffer.
+ *
+ * @since Java 1.2
+ */
public synchronized void setData(byte[] buf, int offset, int length)
{
// This form of setData must be used if offset is to be changed.
@@ -156,6 +305,11 @@ public final class DatagramPacket
this.length = length;
}
+/**
+ * Sets the length of the data in the buffer.
+ *
+ * @param length The new length. (Where len <= buf.length)
+ */
public synchronized void setLength(int length)
{
if (length < 0)
@@ -166,4 +320,5 @@ public final class DatagramPacket
this.length = length;
}
-}
+} // class DatagramPacket
+
diff --git a/libjava/java/net/MulticastSocket.java b/libjava/java/net/MulticastSocket.java
index c5bee02..a782cff 100644
--- a/libjava/java/net/MulticastSocket.java
+++ b/libjava/java/net/MulticastSocket.java
@@ -1,50 +1,108 @@
-// MulticastSocket.java
-
-/* Copyright (C) 1999, 2000 Free Software Foundation
-
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
+/* MulticastSocket.java -- Class for using multicast sockets
+ Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
package java.net;
-import java.io.IOException;
-/**
- * @author Warren Levy <warrenl@cygnus.com>
- * @date May 18, 1999.
- */
+import java.io.IOException;
-/**
+/*
* Written using on-line Java Platform 1.2 API Specification, as well
* as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
* Status: Believed complete and correct.
*/
+/**
+ * This class models a multicast UDP socket. A multicast address is a
+ * class D internet address (one whose most significant bits are 1110).
+ * A multicast group consists of a multicast address and a well known
+ * port number. All members of the group listening on that address and
+ * port will receive all the broadcasts to the group.
+ * <p>
+ * Please note that applets are not allowed to use multicast sockets
+ *
+ * Written using on-line Java Platform 1.2 API Specification, as well
+ * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
+ * Status: Believed complete and correct.
+ *
+ * @author Warren Levy <warrenl@cygnus.com>
+ * @author Aaron M. Renn (arenn@urbanophile.com) (Documentation comments)
+ * @date May 18, 1999.
+ */
public class MulticastSocket extends DatagramSocket
{
// FIXME: the local addr bound to the multicast socket can be reused;
// unlike unicast sockets. It binds to any available network interface.
// See p.1159 JCL book.
+/**
+ * Create a MulticastSocket that this not bound to any address
+ *
+ * @exception IOException If an error occurs
+ */
public MulticastSocket() throws IOException
{
super(0, ServerSocket.ANY_IF);
}
+/**
+ * Create a multicast socket bound to the specified port
+ *
+ * @param The port to bind to
+ *
+ * @exception IOException If an error occurs
+ */
public MulticastSocket(int port) throws IOException
{
super(port, ServerSocket.ANY_IF);
}
+/**
+ * Returns the interface being used for multicast packets
+ *
+ * @return The multicast interface
+ *
+ * @exception SocketException If an error occurs
+ */
public InetAddress getInterface() throws SocketException
{
// FIXME: Is it possible that an InetAddress wasn't returned from getOption?
return (InetAddress) impl.getOption(SocketOptions.IP_MULTICAST_IF);
}
- // Deprecated in JDK1.2
+/**
+ * Returns the current value of the "Time to Live" option. This is the
+ * number of hops a packet can make before it "expires". This method id
+ * deprecated. Use <code>getTimeToLive</code> instead.
+ *
+ * @return The TTL value
+ *
+ * @exception IOException If an error occurs
+ *
+ * @deprecated Replaced by getTimeToLive() in Java 1.2
+ */
public byte getTTL() throws IOException
{
// Use getTTL here rather than getTimeToLive in case we're using an impl
@@ -53,18 +111,43 @@ public class MulticastSocket extends DatagramSocket
return impl.getTTL();
}
- // JDK1.2
+/**
+ * Returns the current value of the "Time to Live" option. This is the
+ * number of hops a packet can make before it "expires".
+ *
+ * @return The TTL value
+ *
+ * @exception IOException If an error occurs
+ *
+ * @since Java 1.2
+ */
public int getTimeToLive() throws IOException
{
return impl.getTimeToLive();
}
+/**
+ * Sets the interface to use for multicast packets.
+ *
+ * @param addr The new interface to use
+ *
+ * @exception SocketException If an error occurs
+ */
public void setInterface(InetAddress inf) throws SocketException
{
impl.setOption(SocketOptions.IP_MULTICAST_IF, inf);
}
- // Deprecated in JDK1.2
+/**
+ * Sets the "Time to Live" value for a socket. The value must be between
+ * 1 and 255.
+ *
+ * @param ttl The new TTL value
+ *
+ * @exception IOException If an error occurs
+ *
+ * @deprecated Replaced by <code>setTimeToLive</code> in Java 1.2
+ */
public void setTTL(byte ttl) throws IOException
{
// Use setTTL here rather than setTimeToLive in case we're using an impl
@@ -73,7 +156,16 @@ public class MulticastSocket extends DatagramSocket
impl.setTTL(ttl);
}
- // JDK1.2
+/**
+ * Sets the "Time to Live" value for a socket. The value must be between
+ * 1 and 255.
+ *
+ * @param ttl The new TTL value
+ *
+ * @exception IOException If an error occurs
+ *
+ * @since Java 1.2
+ */
public void setTimeToLive(int ttl) throws IOException
{
if (ttl <= 0 || ttl > 255)
@@ -82,6 +174,13 @@ public class MulticastSocket extends DatagramSocket
impl.setTimeToLive(ttl);
}
+/**
+ * Joins the specified mulitcast group.
+ *
+ * @param addr The address of the group to join
+ *
+ * @exception IOException If an error occurs
+ */
public void joinGroup(InetAddress mcastaddr) throws IOException
{
if (! mcastaddr.isMulticastAddress())
@@ -94,6 +193,13 @@ public class MulticastSocket extends DatagramSocket
impl.join(mcastaddr);
}
+/**
+ * Leaves the specified multicast group
+ *
+ * @param addr The address of the group to leave
+ *
+ * @exception IOException If an error occurs
+ */
public void leaveGroup(InetAddress mcastaddr) throws IOException
{
if (! mcastaddr.isMulticastAddress())
@@ -106,6 +212,16 @@ public class MulticastSocket extends DatagramSocket
impl.leave(mcastaddr);
}
+/**
+ * Sends a packet of data to a multicast address with a TTL that is
+ * different from the default TTL on this socket. The default TTL for
+ * the socket is not changed.
+ *
+ * @param packet The packet of data to send
+ * @param ttl The TTL for this packet
+ *
+ * @exception IOException If an error occurs
+ */
public synchronized void send(DatagramPacket p, byte ttl) throws IOException
{
SecurityManager s = System.getSecurityManager();
@@ -123,4 +239,4 @@ public class MulticastSocket extends DatagramSocket
impl.send(p);
impl.setTimeToLive(oldttl);
}
-}
+} // class MulticastSocket