commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sebb <seb...@gmail.com>
Subject Re: The java.net.SocketException: No buffer space available (maximum connections reached?): listen failed Exception
Date Wed, 03 Sep 2008 15:40:51 GMT
On 03/09/2008, chitraa <achitraleka@gmail.com> wrote:
>
> Yup, sure. Here it is:
>
> public class MySocketFactory implements SocketFactory
> {
>        private int clientTimeout;
>        private int serverTimeout;
>

If the class can be used from multiple threads, then you need to make
the instance fields final (or volatile) otherwise the values set by
the constructor may not be seen by other threads.

>        public MySocketFactory(int clientTimeout, int serverTimeout)
>        {
>                this.clientTimeout = clientTimeout;
>                this.serverTimeout = serverTimeout;
>        }
>
>        public Socket createSocket(String host, int port) throws
> UnknownHostException, IOException
>        {
>                return createSocket(host, port, null, 0);
>        }
>
>        public Socket createSocket(InetAddress address, int port)
>                        throws IOException
>        {
>                return createSocket(address.getHostName(), port, null, 0);
>        }
>
>        public Socket createSocket(InetAddress address, int port,
>                        InetAddress localAddress, int localPort) throws IOException
>        {
>                return createSocket(address.getHostName(), port, localAddress, 0);
>        }
>
>        public Socket createSocket(String host, int port, InetAddress localAddress,
>                        int localPort) throws UnknownHostException, IOException
>        {
>                Socket socket = new Socket();
>                socket.setSoTimeout(clientTimeout);
>                SocketAddress localaddr = new InetSocketAddress(localAddress, localPort);
>                SocketAddress remoteaddr = new InetSocketAddress(host, port);
>                socket.bind(localaddr);
>                socket.connect(remoteaddr, clientTimeout);
>                return socket;
>        }
>
>        public ServerSocket createServerSocket(int port) throws IOException
>        {
>                ServerSocket ss = new ServerSocket (port);
>                ss.setSoTimeout(serverTimeout);
>                return ss;
>        }
>
>        public ServerSocket createServerSocket(int port, int backlog) throws
> IOException
>        {
>                ServerSocket ss = new ServerSocket (port, backlog);
>                ss.setSoTimeout(serverTimeout);
>                return ss;
>        }
>
>        public ServerSocket createServerSocket(int port, int backlog, InetAddress
> bindAddr) throws IOException
>        {
>                ServerSocket ss = new ServerSocket (port, backlog, bindAddr);
>                ss.setSoTimeout(serverTimeout);
>                return ss;
>        }
> }
>
>
>
> jwcarman wrote:
> >
> > Can we see your implementation of SocketFactory?
> >
> > On Tue, Sep 2, 2008 at 9:01 AM, chitraa <achitraleka@gmail.com> wrote:
> >>
> >> Hi all,
> >>
> >> Although the subject of this message indicates that the Exception I am
> >> getting is a java thing, I am using the apache.commons.net package and
> >> have
> >> a suspicion that it could be related to this library.
> >>
> >> Here's a bit about my program. My program makes a TCPIP connection to
> >> other
> >> machines and uses the FTP protocol to retrieve files to download on the
> >> remote machine. I am using the apache.commons.net.FtpClient java class to
> >> provide me with an interface that allows me to connect to the remote
> >> machine, log on, list the files that are on the remote computer and
> >> download
> >> all the files that I need.
> >>
> >> I have written my own implementation for
> >> apache.commons.net.SocketFactory.
> >> Also, I have ensured that when I connect to a machine and open a socket,
> >> I
> >> disconnect when I am done with the connection.
> >>
> >> After 2 days, I get this exception:
> >>
> >> java.net.SocketException: No buffer space available (maximum connections
> >> reached?): listen failed
> >> at java.net.PlainSocketImpl.socketListen(Native Method)
> >> at java.net.PlainSocketImpl.listen(Unknown Source)
> >> at java.net.ServerSocket.bind(Unknown Source)
> >> at java.net.ServerSocket.<init>(Unknown Source)
> >> at
> >> com.mypackage.TimeoutSettingServerSocketProxy.<init>TimeoutSettingServerSocketProxy.java:28)
> >> at
> >> com.mypackage.MySocketFactory.createServerSocket(RedflexSocketFactory.java:69)
> >> at
> >> org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:475)
> >> at org.apache.commons.net.ftp.FTPClient.retrieveFile(FTPClient.java:1285)
> >>
> >> After running a few test programs, I realised that this was because the
> >> server was having too many open connections. I have checked my program
> >> and I
> >> have closed all open sockets. So, I was wondering if there is an issue
> >> with
> >> apache.commons.net? Does FTPClient open up a ServerSocket without closing
> >> it?
> >>
> >> Also, whats interesting is that once this exception has been thrown, I
> >> get
> >> disconnected from the machine. Reconnecting to it will obviously throw
> >> the
> >> exception again. However, when I connect to other machines, it throws the
> >> same exception:
> >>
> >> Failed to connect to 192.168.1.2 No buffer space available (maximum
> >> connections reached?): connect
> >>
> >> If the 'no buffer space available' is thrown because of too many open
> >> connections on the server, why can't I connect to other servers (which
> >> don't
> >> have many open connections). Why does the client (my machine) throw that
> >> same exception when trying to connect to OTHER machines?
> >>
> >> Thank you.
> >> Kind regards,
> >> Chitra
> >> --
> >> View this message in context:
> >> http://www.nabble.com/The-java.net.SocketException%3A-No-buffer-space-available-%28maximum-connections-reached-%29%3A-listen-failed-Exception-tp19269806p19269806.html
> >> Sent from the Commons - User mailing list archive at Nabble.com.
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> >> For additional commands, e-mail: user-help@commons.apache.org
> >>
> >>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> > For additional commands, e-mail: user-help@commons.apache.org
> >
> >
> >
>
> --
> View this message in context: http://www.nabble.com/The-java.net.SocketException%3A-No-buffer-space-available-%28maximum-connections-reached-%29%3A-listen-failed-Exception-tp19269806p19280979.html
> Sent from the Commons - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message