Author: rwinston
Date: Sat Apr 4 19:08:57 2009
New Revision: 761990
URL: http://svn.apache.org/viewvc?rev=761990&view=rev
Log:
Rename and move
Added:
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/FTPExample.java
(with props)
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/FTPSExample.java
(with props)
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/ServerToServerFTP.java
(with props)
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/TFTPExample.java
(with props)
Removed:
commons/proper/net/branches/NET_2_0/src/main/java/examples/FTPExample.java
commons/proper/net/branches/NET_2_0/src/main/java/examples/FTPSExample.java
commons/proper/net/branches/NET_2_0/src/main/java/examples/server2serverFTP.java
commons/proper/net/branches/NET_2_0/src/main/java/examples/tftp.java
Added:
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/FTPExample.java
URL:
http://svn.apache.org/viewvc/commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/FTPExample.java?rev=761990&view=auto
==============================================================================
---
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/FTPExample.java
(added)
+++
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/FTPExample.java
Sat Apr 4 19:08:57 2009
@@ -0,0 +1,192 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package examples.ftp;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+
+import org.apache.commons.net.PrintCommandListener;
+import org.apache.commons.net.ftp.FTP;
+import org.apache.commons.net.ftp.FTPClient;
+import org.apache.commons.net.ftp.FTPConnectionClosedException;
+import org.apache.commons.net.ftp.FTPReply;
+
+/***
+ * This is an example program demonstrating how to use the FTPClient class.
+ * This program connects to an FTP server and retrieves the specified
+ * file. If the -s flag is used, it stores the local file at the FTP server.
+ * Just so you can see what's happening, all reply strings are printed.
+ * If the -b flag is used, a binary transfer is assumed (default is ASCII).
+ * <p>
+ * Usage: ftp [-s] [-b] <hostname> <username> <password> <remote file> <local
file>
+ * <p>
+ ***/
+public final class FTPExample
+{
+
+ public static final String USAGE =
+ "Usage: ftp [-s] [-b] <hostname> <username> <password> <remote file>
<local file>\n" +
+ "\nDefault behavior is to download a file and use ASCII transfer
mode.\n" +
+ "\t-s store file on server (upload)\n" +
+ "\t-b use binary transfer mode\n";
+
+ public static final void main(String[] args)
+ {
+ int base = 0;
+ boolean storeFile = false, binaryTransfer = false, error = false;
+ String server, username, password, remote, local;
+ FTPClient ftp;
+
+ for (base = 0; base < args.length; base++)
+ {
+ if (args[base].startsWith("-s"))
+ storeFile = true;
+ else if (args[base].startsWith("-b"))
+ binaryTransfer = true;
+ else
+ break;
+ }
+
+ if ((args.length - base) != 5)
+ {
+ System.err.println(USAGE);
+ System.exit(1);
+ }
+
+ server = args[base++];
+ username = args[base++];
+ password = args[base++];
+ remote = args[base++];
+ local = args[base];
+
+ ftp = new FTPClient();
+ ftp.addProtocolCommandListener(new PrintCommandListener(
+ new PrintWriter(System.out)));
+
+ try
+ {
+ int reply;
+ ftp.connect(server);
+ System.out.println("Connected to " + server + ".");
+
+ // After connection attempt, you should check the reply code to
verify
+ // success.
+ reply = ftp.getReplyCode();
+
+ if (!FTPReply.isPositiveCompletion(reply))
+ {
+ ftp.disconnect();
+ System.err.println("FTP server refused connection.");
+ System.exit(1);
+ }
+ }
+ catch (IOException e)
+ {
+ if (ftp.isConnected())
+ {
+ try
+ {
+ ftp.disconnect();
+ }
+ catch (IOException f)
+ {
+ // do nothing
+ }
+ }
+ System.err.println("Could not connect to server.");
+ e.printStackTrace();
+ System.exit(1);
+ }
+
+__main:
+ try
+ {
+ if (!ftp.login(username, password))
+ {
+ ftp.logout();
+ error = true;
+ break __main;
+ }
+
+ System.out.println("Remote system is " + ftp.getSystemName());
+
+ if (binaryTransfer)
+ ftp.setFileType(FTP.BINARY_FILE_TYPE);
+
+ // Use passive mode as default because most of us are
+ // behind firewalls these days.
+ ftp.enterLocalPassiveMode();
+
+ if (storeFile)
+ {
+ InputStream input;
+
+ input = new FileInputStream(local);
+
+ ftp.storeFile(remote, input);
+
+ input.close();
+ }
+ else
+ {
+ OutputStream output;
+
+ output = new FileOutputStream(local);
+
+ ftp.retrieveFile(remote, output);
+
+ output.close();
+ }
+
+ ftp.logout();
+ }
+ catch (FTPConnectionClosedException e)
+ {
+ error = true;
+ System.err.println("Server closed connection.");
+ e.printStackTrace();
+ }
+ catch (IOException e)
+ {
+ error = true;
+ e.printStackTrace();
+ }
+ finally
+ {
+ if (ftp.isConnected())
+ {
+ try
+ {
+ ftp.disconnect();
+ }
+ catch (IOException f)
+ {
+ // do nothing
+ }
+ }
+ }
+
+ System.exit(error ? 1 : 0);
+ } // end main
+
+}
+
Propchange:
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/FTPExample.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/FTPSExample.java
URL:
http://svn.apache.org/viewvc/commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/FTPSExample.java?rev=761990&view=auto
==============================================================================
---
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/FTPSExample.java
(added)
+++
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/FTPSExample.java
Sat Apr 4 19:08:57 2009
@@ -0,0 +1,196 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package examples.ftp;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.security.NoSuchAlgorithmException;
+
+import org.apache.commons.net.PrintCommandListener;
+import org.apache.commons.net.ftp.FTP;
+import org.apache.commons.net.ftp.FTPConnectionClosedException;
+import org.apache.commons.net.ftp.FTPReply;
+import org.apache.commons.net.ftp.FTPSClient;
+
+/***
+ * This is an example program demonstrating how to use the FTPSClient class.
+ * This program connects to an FTP server and retrieves the specified
+ * file. If the -s flag is used, it stores the local file at the FTP server.
+ * Just so you can see what's happening, all reply strings are printed.
+ * If the -b flag is used, a binary transfer is assumed (default is ASCII).
+ * <p>
+ * Usage: ftp [-s] [-b] <hostname> <username> <password> <remote file> <local
file>
+ * <p>
+ ***/
+public final class FTPSExample
+{
+
+ public static final String USAGE =
+ "Usage: ftp [-s] [-b] <hostname> <username> <password> <remote file>
<local file>\n" +
+ "\nDefault behavior is to download a file and use ASCII transfer
mode.\n" +
+ "\t-s store file on server (upload)\n" +
+ "\t-b use binary transfer mode\n";
+
+ public static final void main(String[] args) throws
NoSuchAlgorithmException
+ {
+ int base = 0;
+ boolean storeFile = false, binaryTransfer = false, error = false;
+ String server, username, password, remote, local;
+ String protocol = "SSL"; // SSL/TLS
+ FTPSClient ftps;
+
+ for (base = 0; base < args.length; base++)
+ {
+ if (args[base].startsWith("-s"))
+ storeFile = true;
+ else if (args[base].startsWith("-b"))
+ binaryTransfer = true;
+ else
+ break;
+ }
+
+ if ((args.length - base) != 5)
+ {
+ System.err.println(USAGE);
+ System.exit(1);
+ }
+
+ server = args[base++];
+ username = args[base++];
+ password = args[base++];
+ remote = args[base++];
+ local = args[base];
+
+ ftps = new FTPSClient(protocol);
+
+ ftps.addProtocolCommandListener(new PrintCommandListener(new
PrintWriter(System.out)));
+
+ try
+ {
+ int reply;
+
+ ftps.connect(server);
+ System.out.println("Connected to " + server + ".");
+
+ // After connection attempt, you should check the reply code to
verify
+ // success.
+ reply = ftps.getReplyCode();
+
+ if (!FTPReply.isPositiveCompletion(reply))
+ {
+ ftps.disconnect();
+ System.err.println("FTP server refused connection.");
+ System.exit(1);
+ }
+ }
+ catch (IOException e)
+ {
+ if (ftps.isConnected())
+ {
+ try
+ {
+ ftps.disconnect();
+ }
+ catch (IOException f)
+ {
+ // do nothing
+ }
+ }
+ System.err.println("Could not connect to server.");
+ e.printStackTrace();
+ System.exit(1);
+ }
+
+__main:
+ try
+ {
+ ftps.setBufferSize(1000);
+
+ if (!ftps.login(username, password))
+ {
+ ftps.logout();
+ error = true;
+ break __main;
+ }
+
+
+ System.out.println("Remote system is " + ftps.getSystemName());
+
+ if (binaryTransfer) ftps.setFileType(FTP.BINARY_FILE_TYPE);
+
+ // Use passive mode as default because most of us are
+ // behind firewalls these days.
+ ftps.enterLocalPassiveMode();
+
+ if (storeFile)
+ {
+ InputStream input;
+
+ input = new FileInputStream(local);
+
+ ftps.storeFile(remote, input);
+
+ input.close();
+ }
+ else
+ {
+ OutputStream output;
+
+ output = new FileOutputStream(local);
+
+ ftps.retrieveFile(remote, output);
+
+ output.close();
+ }
+
+ ftps.logout();
+ }
+ catch (FTPConnectionClosedException e)
+ {
+ error = true;
+ System.err.println("Server closed connection.");
+ e.printStackTrace();
+ }
+ catch (IOException e)
+ {
+ error = true;
+ e.printStackTrace();
+ }
+ finally
+ {
+ if (ftps.isConnected())
+ {
+ try
+ {
+ ftps.disconnect();
+ }
+ catch (IOException f)
+ {
+ // do nothing
+ }
+ }
+ }
+
+ System.exit(error ? 1 : 0);
+ } // end main
+
+}
Propchange:
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/FTPSExample.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/ServerToServerFTP.java
URL:
http://svn.apache.org/viewvc/commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/ServerToServerFTP.java?rev=761990&view=auto
==============================================================================
---
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/ServerToServerFTP.java
(added)
+++
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/ServerToServerFTP.java
Sat Apr 4 19:08:57 2009
@@ -0,0 +1,216 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package examples.ftp;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.net.InetAddress;
+
+import org.apache.commons.net.PrintCommandListener;
+import org.apache.commons.net.ProtocolCommandListener;
+import org.apache.commons.net.ftp.FTPClient;
+import org.apache.commons.net.ftp.FTPReply;
+
+/***
+ * This is an example program demonstrating how to use the FTPClient class.
+ * This program arranges a server to server file transfer that transfers
+ * a file from host1 to host2. Keep in mind, this program might only work
+ * if host2 is the same as the host you run it on (for security reasons,
+ * some ftp servers only allow PORT commands to be issued with a host
+ * argument equal to the client host).
+ * <p>
+ * Usage: ftp <host1> <user1> <pass1> <file1> <host2> <user2> <pass2> <file2>
+ * <p>
+ ***/
+public final class ServerToServerFTP
+{
+
+ public static final void main(String[] args)
+ {
+ String server1, username1, password1, file1;
+ String server2, username2, password2, file2;
+ FTPClient ftp1, ftp2;
+ ProtocolCommandListener listener;
+
+ if (args.length < 8)
+ {
+ System.err.println(
+ "Usage: ftp <host1> <user1> <pass1> <file1> <host2> <user2>
<pass2> <file2>"
+ );
+ System.exit(1);
+ }
+
+ server1 = args[0];
+ username1 = args[1];
+ password1 = args[2];
+ file1 = args[3];
+ server2 = args[4];
+ username2 = args[5];
+ password2 = args[6];
+ file2 = args[7];
+
+ listener = new PrintCommandListener(new PrintWriter(System.out));
+ ftp1 = new FTPClient();
+ ftp1.addProtocolCommandListener(listener);
+ ftp2 = new FTPClient();
+ ftp2.addProtocolCommandListener(listener);
+
+ try
+ {
+ int reply;
+ ftp1.connect(server1);
+ System.out.println("Connected to " + server1 + ".");
+
+ reply = ftp1.getReplyCode();
+
+ if (!FTPReply.isPositiveCompletion(reply))
+ {
+ ftp1.disconnect();
+ System.err.println("FTP server1 refused connection.");
+ System.exit(1);
+ }
+ }
+ catch (IOException e)
+ {
+ if (ftp1.isConnected())
+ {
+ try
+ {
+ ftp1.disconnect();
+ }
+ catch (IOException f)
+ {
+ // do nothing
+ }
+ }
+ System.err.println("Could not connect to server1.");
+ e.printStackTrace();
+ System.exit(1);
+ }
+
+ try
+ {
+ int reply;
+ ftp2.connect(server2);
+ System.out.println("Connected to " + server2 + ".");
+
+ reply = ftp2.getReplyCode();
+
+ if (!FTPReply.isPositiveCompletion(reply))
+ {
+ ftp2.disconnect();
+ System.err.println("FTP server2 refused connection.");
+ System.exit(1);
+ }
+ }
+ catch (IOException e)
+ {
+ if (ftp2.isConnected())
+ {
+ try
+ {
+ ftp2.disconnect();
+ }
+ catch (IOException f)
+ {
+ // do nothing
+ }
+ }
+ System.err.println("Could not connect to server2.");
+ e.printStackTrace();
+ System.exit(1);
+ }
+
+__main:
+ try
+ {
+ if (!ftp1.login(username1, password1))
+ {
+ System.err.println("Could not login to " + server1);
+ break __main;
+ }
+
+ if (!ftp2.login(username2, password2))
+ {
+ System.err.println("Could not login to " + server2);
+ break __main;
+ }
+
+ // Let's just assume success for now.
+ ftp2.enterRemotePassiveMode();
+
+
ftp1.enterRemoteActiveMode(InetAddress.getByName(ftp2.getPassiveHost()),
+ ftp2.getPassivePort());
+
+ // Although you would think the store command should be sent to
server2
+ // first, in reality, ftp servers like wu-ftpd start accepting data
+ // connections right after entering passive mode. Additionally,
they
+ // don't even send the positive preliminary reply until after the
+ // transfer is completed (in the case of passive mode transfers).
+ // Therefore, calling store first would hang waiting for a
preliminary
+ // reply.
+ if (ftp1.remoteRetrieve(file1) && ftp2.remoteStoreUnique(file2))
+ {
+ // if(ftp1.remoteRetrieve(file1) &&
ftp2.remoteStore(file2)) {
+ // We have to fetch the positive completion reply.
+ ftp1.completePendingCommand();
+ ftp2.completePendingCommand();
+ }
+ else
+ {
+ System.err.println(
+ "Couldn't initiate transfer. Check that filenames are
valid.");
+ break __main;
+ }
+
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ System.exit(1);
+ }
+ finally
+ {
+ try
+ {
+ if (ftp1.isConnected())
+ {
+ ftp1.logout();
+ ftp1.disconnect();
+ }
+ }
+ catch (IOException e)
+ {
+ // do nothing
+ }
+
+ try
+ {
+ if (ftp2.isConnected())
+ {
+ ftp2.logout();
+ ftp2.disconnect();
+ }
+ }
+ catch (IOException e)
+ {
+ // do nothing
+ }
+ }
+ }
+}
Propchange:
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/ServerToServerFTP.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/TFTPExample.java
URL:
http://svn.apache.org/viewvc/commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/TFTPExample.java?rev=761990&view=auto
==============================================================================
---
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/TFTPExample.java
(added)
+++
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/TFTPExample.java
Sat Apr 4 19:08:57 2009
@@ -0,0 +1,257 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package examples.ftp;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.net.SocketException;
+import java.net.UnknownHostException;
+import org.apache.commons.net.tftp.TFTP;
+import org.apache.commons.net.tftp.TFTPClient;
+
+/***
+ * This is an example of a simple Java tftp client using NetComponents.
+ * Notice how all of the code is really just argument processing and
+ * error handling.
+ * <p>
+ * Usage: tftp [options] hostname localfile remotefile
+ * hostname - The name of the remote host
+ * localfile - The name of the local file to send or the name to use for
+ * the received file
+ * remotefile - The name of the remote file to receive or the name for
+ * the remote server to use to name the local file being sent.
+ * options: (The default is to assume -r -b)
+ * -s Send a local file
+ * -r Receive a remote file
+ * -a Use ASCII transfer mode
+ * -b Use binary transfer mode
+ * <p>
+ ***/
+public final class TFTPExample
+{
+ static final String USAGE =
+ "Usage: tftp [options] hostname localfile remotefile\n\n" +
+ "hostname - The name of the remote host\n" +
+ "localfile - The name of the local file to send or the name to use
for\n" +
+ "\tthe received file\n" +
+ "remotefile - The name of the remote file to receive or the name
for\n" +
+ "\tthe remote server to use to name the local file being sent.\n\n" +
+ "options: (The default is to assume -r -b)\n" +
+ "\t-s Send a local file\n" +
+ "\t-r Receive a remote file\n" +
+ "\t-a Use ASCII transfer mode\n" +
+ "\t-b Use binary transfer mode\n";
+
+ public final static void main(String[] args)
+ {
+ boolean receiveFile = true, closed;
+ int transferMode = TFTP.BINARY_MODE, argc;
+ String arg, hostname, localFilename, remoteFilename;
+ TFTPClient tftp;
+
+ // Parse options
+ for (argc = 0; argc < args.length; argc++)
+ {
+ arg = args[argc];
+ if (arg.startsWith("-"))
+ {
+ if (arg.equals("-r"))
+ receiveFile = true;
+ else if (arg.equals("-s"))
+ receiveFile = false;
+ else if (arg.equals("-a"))
+ transferMode = TFTP.ASCII_MODE;
+ else if (arg.equals("-b"))
+ transferMode = TFTP.BINARY_MODE;
+ else
+ {
+ System.err.println("Error: unrecognized option.");
+ System.err.print(USAGE);
+ System.exit(1);
+ }
+ }
+ else
+ break;
+ }
+
+ // Make sure there are enough arguments
+ if (args.length - argc != 3)
+ {
+ System.err.println("Error: invalid number of arguments.");
+ System.err.print(USAGE);
+ System.exit(1);
+ }
+
+ // Get host and file arguments
+ hostname = args[argc];
+ localFilename = args[argc + 1];
+ remoteFilename = args[argc + 2];
+
+ // Create our TFTP instance to handle the file transfer.
+ tftp = new TFTPClient();
+
+ // We want to timeout if a response takes longer than 60 seconds
+ tftp.setDefaultTimeout(60000);
+
+ // Open local socket
+ try
+ {
+ tftp.open();
+ }
+ catch (SocketException e)
+ {
+ System.err.println("Error: could not open local UDP socket.");
+ System.err.println(e.getMessage());
+ System.exit(1);
+ }
+
+ // We haven't closed the local file yet.
+ closed = false;
+
+ // If we're receiving a file, receive, otherwise send.
+ if (receiveFile)
+ {
+ FileOutputStream output = null;
+ File file;
+
+ file = new File(localFilename);
+
+ // If file exists, don't overwrite it.
+ if (file.exists())
+ {
+ System.err.println("Error: " + localFilename + " already
exists.");
+ System.exit(1);
+ }
+
+ // Try to open local file for writing
+ try
+ {
+ output = new FileOutputStream(file);
+ }
+ catch (IOException e)
+ {
+ tftp.close();
+ System.err.println("Error: could not open local file for
writing.");
+ System.err.println(e.getMessage());
+ System.exit(1);
+ }
+
+ // Try to receive remote file via TFTP
+ try
+ {
+ tftp.receiveFile(remoteFilename, transferMode, output,
hostname);
+ }
+ catch (UnknownHostException e)
+ {
+ System.err.println("Error: could not resolve hostname.");
+ System.err.println(e.getMessage());
+ System.exit(1);
+ }
+ catch (IOException e)
+ {
+ System.err.println(
+ "Error: I/O exception occurred while receiving file.");
+ System.err.println(e.getMessage());
+ System.exit(1);
+ }
+ finally
+ {
+ // Close local socket and output file
+ tftp.close();
+ try
+ {
+ output.close();
+ closed = true;
+ }
+ catch (IOException e)
+ {
+ closed = false;
+ System.err.println("Error: error closing file.");
+ System.err.println(e.getMessage());
+ }
+ }
+
+ if (!closed)
+ System.exit(1);
+
+ }
+ else
+ {
+ // We're sending a file
+ FileInputStream input = null;
+
+ // Try to open local file for reading
+ try
+ {
+ input = new FileInputStream(localFilename);
+ }
+ catch (IOException e)
+ {
+ tftp.close();
+ System.err.println("Error: could not open local file for
reading.");
+ System.err.println(e.getMessage());
+ System.exit(1);
+ }
+
+ // Try to send local file via TFTP
+ try
+ {
+ tftp.sendFile(remoteFilename, transferMode, input, hostname);
+ }
+ catch (UnknownHostException e)
+ {
+ System.err.println("Error: could not resolve hostname.");
+ System.err.println(e.getMessage());
+ System.exit(1);
+ }
+ catch (IOException e)
+ {
+ System.err.println(
+ "Error: I/O exception occurred while sending file.");
+ System.err.println(e.getMessage());
+ System.exit(1);
+ }
+ finally
+ {
+ // Close local socket and input file
+ tftp.close();
+ try
+ {
+ input.close();
+ closed = true;
+ }
+ catch (IOException e)
+ {
+ closed = false;
+ System.err.println("Error: error closing file.");
+ System.err.println(e.getMessage());
+ }
+ }
+
+ if (!closed)
+ System.exit(1);
+
+ }
+
+ }
+
+}
+
+
Propchange:
commons/proper/net/branches/NET_2_0/src/main/java/examples/ftp/TFTPExample.java
------------------------------------------------------------------------------
svn:eol-style = native