We had a similar problem, it was caused by having a single specific local-port configured for the data-connection. fixed it by setting local-port to zero, that is let the server use a default local port for connecting out.

in ftpd.xml
   <data-connection>
       <idle-time>10</idle-time>
       <active>
           <enable>true</enable>
           <local-address>10.25.1.8</local-address>
           <local-port>0</local-port>
           <ip-check>false</ip-check>
       </active>
       <passive>
           <address>10.25.1.8</address>
           <ports>0</ports>
       </passive>
   </data-connection>


the code where you're throwing is

                  if(localPort == 0) {
dataSoc = new Socket(address, port); }
                   else {
InetAddress localAddr = dataConfig.getActiveLocalAddress(); dataSoc = new Socket(address, port, localAddr, localPort);
                   }

by setting a single local-port, you call Socket with a localAddr and localPort,
so it makes sense that the second call would fail with a bind failure.



hope that helps


[EMAIL PROTECTED] wrote:
Hi ,
I have integrated the FTPServer in my application. FTP server is running fine in my application. The FTPClient (org.apache.commons.net.ftp.FTPClient) connects to FTPServer on port 18021. I am able to retrieve a file from the FTPServer. Whenever I try to retrieve more than one files from the FTPServer. Then I am getting exception "BindException: Address already in use" . Could you please tell me How I can resolve this problem? Please let me know if you have any solutions or suggestion for this. I am looking forward your response.

I am also sending code snippets:

FTPClient client = new FTPClient();
        System.out.println("Connecting FTP Server");
        client.connect("10.150.1.111",18021);
        //client.connect("10.150.1.111");
        System.out.println("FTP Server Connected");
int reply = client.getReplyCode(); System.out.println("[EmbeddedFtpSessionPolicy] FTP connection reply code is "+reply);
        if (FTPReply.isPositiveCompletion(reply)) {
System.out.println("[EmbeddedFtpSessionPolicy] connection established to "+client.getRemoteAddress().getHostAddress()); boolean success = client.login("admin", "admin");
                System.out.println("FTP Server success "+success);
        }
        File local1 = new File("TEST.log");
        File local = new File("ftpd.log");
        boolean  status;
// if we comment any one of the given bellow it will work properly .... status = client.retrieveFile("/sdp/database/ftpd.properties", new FileOutputStream(local)); status = client.retrieveFile("/sdp/database/TEST.log", new FileOutputStream(local1));

        if (client.isConnected()) {
                System.out.println("FTP Server disconnected");
                client.logout();
                client.disconnect();
                client =null;
        }
        System.out.println("FTP Server disconnected ");

2006-07-12 15:22:12,641 INFO [org.apache.ftpserver.RequestHandler] Open connection - 10.150.10.133 2006-07-12 15:22:12,650 INFO [org.apache.ftpserver.command.PASS] Login success - admin 2006-07-12 15:22:12,660 WARN [org.apache.ftpserver.FtpDataConnection] FtpDataConnection.getDataSocket()
java.net.BindException: Address already in use
        at java.net.PlainSocketImpl.socketBind(Native Method)
        at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:331)
        at java.net.Socket.bind(Socket.java:498)
        at java.net.Socket.<init>(Socket.java:307)
        at java.net.Socket.<init>(Socket.java:211)
at org.apache.ftpserver.FtpDataConnection.getDataSocket(FtpDataConnection.java:205) at org.apache.ftpserver.FtpRequestImpl.getDataOutputStream(FtpRequestImpl.java:332)
        at org.apache.ftpserver.command.RETR.execute(RETR.java:120)
at org.apache.ftpserver.RequestHandler.service(RequestHandler.java:277) at org.apache.ftpserver.RequestHandler.run(RequestHandler.java:242)
        at java.lang.Thread.run(Thread.java:534)


Thanks and regards,


Tarkeshwar Prasad
Flextronics Software Systems [EMAIL PROTECTED] ( Mobile: 9886562675 Office: 080-41067342(x7342)

***********************  FSS-Private   ***********************

Reply via email to