aboutsummaryrefslogtreecommitdiff
path: root/libjava/java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java')
-rw-r--r--libjava/java/net/DatagramSocket.java14
-rw-r--r--libjava/java/net/MulticastSocket.java13
-rw-r--r--libjava/java/net/ServerSocket.java16
-rw-r--r--libjava/java/net/Socket.java19
4 files changed, 49 insertions, 13 deletions
diff --git a/libjava/java/net/DatagramSocket.java b/libjava/java/net/DatagramSocket.java
index 2cef7b4..c286d65 100644
--- a/libjava/java/net/DatagramSocket.java
+++ b/libjava/java/net/DatagramSocket.java
@@ -72,6 +72,10 @@ public class DatagramSocket
*/
DatagramSocketImpl impl;
+ /**
+ * The unique DatagramChannel object associated with this datagram socket,
+ * or null.
+ */
DatagramChannel ch;
/**
@@ -82,7 +86,7 @@ public class DatagramSocket
/**
* This is the port we are "connected" to
*/
- private int remotePort;
+ private int remotePort = -1;
/**
* Creates a DatagramSocket from a specified DatagramSocketImpl instance
@@ -439,7 +443,6 @@ public class DatagramSocket
* @since 1.2
*/
public void connect(InetAddress address, int port)
- throws SocketException
{
if (address == null)
throw new IllegalArgumentException ("Address may not be null");
@@ -451,10 +454,15 @@ public class DatagramSocket
if (sm != null)
sm.checkAccept(address.getHostName (), port);
+ try
+ {
impl.connect (address, port);
-
remoteAddress = address;
remotePort = port;
+ }
+ catch (SocketException e)
+ {
+ }
}
/**
diff --git a/libjava/java/net/MulticastSocket.java b/libjava/java/net/MulticastSocket.java
index 2700ebe..2535a48 100644
--- a/libjava/java/net/MulticastSocket.java
+++ b/libjava/java/net/MulticastSocket.java
@@ -1,5 +1,6 @@
/* MulticastSocket.java -- Class for using multicast sockets
- Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
+ Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -163,13 +164,15 @@ public class MulticastSocket extends DatagramSocket
/**
* Sets the interface to use for sending multicast packets.
*
- * @param inf The new interface to use
+ * @param addr The new interface to use.
*
- * @exception SocketException If an error occurs
+ * @exception SocketException If an error occurs.
+ *
+ * @since 1.4
*/
- public void setInterface(InetAddress inf) throws SocketException
+ public void setInterface(InetAddress addr) throws SocketException
{
- impl.setOption(SocketOptions.IP_MULTICAST_IF, inf);
+ impl.setOption(SocketOptions.IP_MULTICAST_IF, addr);
}
/**
diff --git a/libjava/java/net/ServerSocket.java b/libjava/java/net/ServerSocket.java
index 62917b6..e2f8e63 100644
--- a/libjava/java/net/ServerSocket.java
+++ b/libjava/java/net/ServerSocket.java
@@ -77,6 +77,8 @@ public class ServerSocket
*/
private ServerSocketChannel ch;
+ private boolean closed = false;
+
/**
* Constructor that simply sets the implementation.
*
@@ -200,6 +202,9 @@ public class ServerSocket
*/
public void bind (SocketAddress endpoint, int backlog) throws IOException
{
+ if (closed)
+ throw new SocketException ("ServerSocket is closed");
+
if (impl == null)
throw new IOException ("Cannot initialize Socket implementation");
@@ -315,7 +320,13 @@ public class ServerSocket
*/
public void close () throws IOException
{
- impl.close();
+ if (impl != null)
+ impl.close ();
+
+ if (ch != null)
+ ch.close ();
+
+ closed = true;
}
/**
@@ -358,8 +369,7 @@ public class ServerSocket
*/
public boolean isClosed()
{
- // FIXME: implement this
- return false;
+ return closed;
}
/**
diff --git a/libjava/java/net/Socket.java b/libjava/java/net/Socket.java
index 592f39a..e57c1ed 100644
--- a/libjava/java/net/Socket.java
+++ b/libjava/java/net/Socket.java
@@ -85,6 +85,8 @@ public class Socket
SocketChannel ch; // this field must have been set if created by SocketChannel
+ private boolean closed = false;
+
// Constructors
/**
@@ -308,6 +310,9 @@ public class Socket
*/
public void bind (SocketAddress bindpoint) throws IOException
{
+ if (closed)
+ throw new SocketException ("Socket is closed");
+
if ( !(bindpoint instanceof InetSocketAddress))
throw new IllegalArgumentException ();
@@ -330,6 +335,9 @@ public class Socket
public void connect (SocketAddress endpoint)
throws IOException
{
+ if (closed)
+ throw new SocketException ("Socket is closed");
+
if (! (endpoint instanceof InetSocketAddress))
throw new IllegalArgumentException ("Address type not supported");
@@ -357,6 +365,9 @@ public class Socket
public void connect (SocketAddress endpoint, int timeout)
throws IOException
{
+ if (closed)
+ throw new SocketException ("Socket is closed");
+
if (! (endpoint instanceof InetSocketAddress))
throw new IllegalArgumentException ("Address type not supported");
@@ -853,6 +864,11 @@ public class Socket
{
if (impl != null)
impl.close();
+
+ if (ch != null)
+ ch.close();
+
+ closed = true;
}
/**
@@ -1035,8 +1051,7 @@ public class Socket
*/
public boolean isClosed ()
{
- // FIXME: implement this.
- return false;
+ return closed;
}
/**