commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Carman" <ja...@carmanconsulting.com>
Subject Re: The java.net.SocketException: No buffer space available (maximum connections reached?): listen failed Exception
Date Wed, 03 Sep 2008 01:16:14 GMT
Does it do the same thing without your custom SocketFactory?

On Tue, Sep 2, 2008 at 9:01 PM, chitraa <achitraleka@gmail.com> wrote:
>
> Yup, sure. Here it is:
>
> public class MySocketFactory implements SocketFactory
> {
>        private int clientTimeout;
>        private int serverTimeout;
>
>        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