diff options
Diffstat (limited to 'libjava/java/net/Socket.java')
-rw-r--r-- | libjava/java/net/Socket.java | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/libjava/java/net/Socket.java b/libjava/java/net/Socket.java new file mode 100644 index 00000000000..8c027d9f88f --- /dev/null +++ b/libjava/java/net/Socket.java @@ -0,0 +1,209 @@ +// Socket.java + +/* Copyright (C) 1999 Cygnus Solutions + + 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. */ + +/** + * @author Per Bothner <bothner@cygnus.com> + * @date January 6, 1999. + */ + +/** Written using on-line Java Platform 1.2 API Specification. + * Status: I believe all methods are implemented, but many + * of them just throw an exception. + */ + +package java.net; +import java.io.*; + +public class Socket +{ + static SocketImplFactory factory; + SocketImpl impl; + + protected Socket () + { + } + + protected Socket (SocketImpl impl) throws SocketException + { + this.impl = impl; + } + + public Socket (String host, int port) + throws UnknownHostException, IOException + { + this(factory == null ? new PlainSocketImpl() : factory.createSocketImpl()); + SecurityManager s = System.getSecurityManager(); + if (s != null) + s.checkConnect(host, port); + impl.create(true); + impl.connect(host, port); + } + + public Socket (InetAddress address, int port) + throws IOException + { + this(factory == null ? new PlainSocketImpl() : factory.createSocketImpl()); + SecurityManager s = System.getSecurityManager(); + if (s != null) + s.checkConnect(address.getHostName(), port); + impl.create(true); + impl.connect(address, port); + } + + public Socket (String host, int port, + InetAddress localAddr, int localPort) throws IOException + { + this(factory == null ? new PlainSocketImpl() : factory.createSocketImpl()); + SecurityManager s = System.getSecurityManager(); + if (s != null) + s.checkConnect(host, port); + impl.create(true); + impl.bind(localAddr, localPort); + impl.connect(host, port); + } + + public Socket (InetAddress address, int port, + InetAddress localAddr, int localPort) throws IOException + { + this(factory == null ? new PlainSocketImpl() : factory.createSocketImpl()); + SecurityManager s = System.getSecurityManager(); + if (s != null) + s.checkConnect(address.getHostName(), port); + impl.create(true); + impl.bind(localAddr, localPort); + impl.connect(address, port); + } + + /** + * @deprecated Use DatagramSocket instead for UDP transport. + */ + public Socket (String host, int port, boolean stream) throws IOException + { + impl = factory == null ? new PlainSocketImpl() + : factory.createSocketImpl(); + impl.create(stream); + SecurityManager s = System.getSecurityManager(); + if (s != null) + s.checkConnect(host, port); + impl.connect(host, port); + } + + /** + * @deprecated Use DatagramSocket instead for UDP transport. + */ + public Socket (InetAddress host, int port, boolean stream) throws IOException + { + impl = factory == null ? new PlainSocketImpl() + : factory.createSocketImpl(); + impl.create(stream); + SecurityManager s = System.getSecurityManager(); + if (s != null) + s.checkConnect(host.getHostName(), port); + impl.connect(host, port); + } + + public InetAddress getInetAddress () + { + return impl.getInetAddress(); + } + + public InetAddress getLocalAddress () + { + // There doesn't seem to be any way to implement this + // using a (generic) SocketImpl ... What am I missing? + throw new InternalError("Socket.getLocalAddres not implemented"); + } + + public int getPort () + { + return impl.getPort(); + } + + public int getLocalPort () + { + return impl.getLocalPort(); + } + + public InputStream getInputStream () throws IOException + { + return impl.getInputStream(); + } + + public OutputStream getOutputStream () throws IOException + { + return impl.getOutputStream(); + } + + public void setTcpNoDelay (boolean on) throws SocketException + { + throw new InternalError("Socket.setTcpNoDelay not implemented"); + } + + public boolean getTcpNoDelay() throws SocketException + { + throw new InternalError("Socket.getTcpNoDelay not implemented"); + } + + public void setSoLinger(boolean on, int linger) throws SocketException + { + throw new InternalError("Socket.setSoLinger not implemented"); + } + + public boolean getSoLinger() throws SocketException + { + throw new InternalError("Socket.getSoLinger not implemented"); + } + + public void setSoTimeout (int timeout) throws SocketException + { + throw new InternalError("Socket.setSoTimeout not implemented"); + } + + public int getSoTimeout () throws SocketException + { + throw new InternalError("Socket.getSoTimeout not implemented"); + } + + public void setSendBufferSize (int size) throws SocketException + { + throw new InternalError("Socket.setSendBufferSize not implemented"); + } + + public int getSendBufferSize () throws SocketException + { + throw new InternalError("Socket.getSendBufferSize not implemented"); + } + + public void setReceiveBufferSize (int size) throws SocketException + { + throw new InternalError("Socket.setReceiveBufferSize not implemented"); + } + + public int getReceiveBufferSize () throws SocketException + { + throw new InternalError("Socket.getReceiveBufferSize not implemented"); + } + + public void close () throws IOException + { + impl.close(); + } + + public String toString () + { + return impl.toString(); + } + + public static void setSocketImplFactory (SocketImplFactory fac) + throws IOException + { + factory = fac; + } +} |