MDM FTP File Server - SFTP?
Looking into what it takes to install and setup MDM. The Master Guide lists a file server as a required component and states to look at the Configuration guide for details. The Configuration guide talks about the FTP protocol and other guides mention it as the FTP File Server.
Can SFTP be implemented instead of FTP? If not are there options instead of FTP. FTP is not permitted for internal data movements in my environment. I saw in the XI forum that XI with the right SP can handle SFTP with a java proxy.
Thanks
Hello:
That FTP Server was just a way to give MDM the files for import, and take the files as export.
You can use anything you want. The file server could be the MDM server itself. You just have to manage how to give MDM something to import, and what to do with the file that MDM will syndicate
I hope this helps
Alejandro
Similar Messages
-
How set FTP file server set in my Data carriar in DMS
hi
please say me how i set my FTP file server in in my Data carriar Of DMS
please say me
NaineshHi Andreas,
It depends on your needs. If you want to provide redundancy to your FTP services, it is recommended to group two VMs in an Availability Set to ensures that during either a planned or unplanned maintenance event, at least one VM will be
available and meet the 99.95% Azure SLA.
http://azure.microsoft.com/en-us/documentation/articles/virtual-machines-manage-availability/#configure-each-application-tier-into-separate-availability-sets
If you want to set up two files servers in Azure VMs to an availability set, you can follow the steps below:
1. Create a virtual network:
http://azure.microsoft.com/en-us/documentation/articles/create-virtual-network/
2. Create a VM in a new cloud service and choose teh virtual network you have created:
http://azure.microsoft.com/en-us/documentation/articles/virtual-machines-windows-tutorial/
3. After the VM is running, you can create an availability set on the VM in the Configure page of the VM in the managemeng portal.
4. Create a new VM into the same cloud service and add it to the availability set.
Best regards,
Susie
Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support, contact [email protected] -
Howdy. I do produce video and audio for people. I am doing a project now where the clients dont even live in the same town or state. I would like to have a Mac Mini set up in the future where i can put the file on the hard drive and then send a link in an email to the client and then have a link or instructions on there to tell them how to get to the file they are supposed to get. That way i can send multi gig files to them and they can down load them on their own time and i dont have to waste discs and postage mailing things over night. I would need something where they can not acess any of the other files for other clients on there only the ones for them. Does anybody know of such a software or how to do it. I am needing something similar to a Digidelivery server made by Digidesign. http://www.digidesign.com/index.cfm?navid=38&langid=100& Thanks for the help.
You might take a look at GroupLogic's MassTransit. Without spending a lot of time comparing features and workflows, it looks like the closest thing on a Mac to the Digidelivery server. If that's overkill, something like Haxial's KDX might work for you.
For additional suggestions, you might try asking in the Mac OS X 10.4 area, since this really isn't hardware related per se, so you don't want to limit just to Mac mini users.
Regards. -
Firefox does not show filesystem or FTP file list
When I type "/" or "file:///" in the address bar it does not show anything. It should list my the folders in my root drive but it shows nothing. Strangely this is the same for any FTP file server I go to. It shows nothing but claims to be loaded. I think something in Firefox is missing.
I cleared the cookies and that might have done it. Comment if you have or had this problem.
-
Unable to Poll files in SFTP Location using FTP Adapter
Hi SOA Experts,
I have an issue like soa composite is unable to poll files.
I have done the below configuration .
1.created the jndi by giving values to properties host name,port,username,password,usesftp.
2. refered the same jndi in composite.
3. After deployment it is not pulling files from sftp location.
From the logs I came to know it is able to list files for the directory mentioned in the composite.The permissions are read-write.
I am using sftp server credentials were the server is running on windows.
But unable to pick it by composite and no instances can be seen in em console.
Can any one can provide solution ?1. Open your FTP Server ( ex:- Filezilla Server :- navigate to the users :- under the users you will find the shared folder.
Check the fields . Now it should work
Let me know if you still need any info on the same.
Thanks
Sury@ -
Problem in Archiving File From FTP Server to XI File Server Using FCC
Hi,
The scenario is file to IDOc. XI has to read the input file from client FTP server and archive it to XI local file server. Archiving on XI server is working fine without FCC (for xml files). But with FCC, the sender FTP adapter is archiving empty files (0 kb files).
I've checked SXMB_MONI, even there I can see the file data and the IDoc is getting posted with proper data. But, the archived file is empty. Not sure about the problem.
Please suggest. Thanks in advance.
Regards,
Joe.Hi,
File adapter has the functionality which support the empty file handling.
Handling of Empty Files
Specify how empty files (length 0 bytes) are to be handled.
○ Do Not Create Message
No XI messages are created from empty files.
The files are processed according to the selected Processing Mode.
For example, if the processing mode is Delete, empty files are deleted in the source directory.
○ Process Empty Files
XI messages are created with an empty main payload.
The files are processed according to the selected Processing Mode.
○ Skip Empty Files
No XI messages are created from empty files.
Empty files are skipped and remain in the source directory.
refer the belwo link:
http://help.sap.com/saphelp_nw04/helpdata/en/ae/d03341771b4c0de10000000a1550b0/frameset.htm
reward points if helpful*
thanks
SAPXI -
Sending XML file from SAP to Windows Based file server with FTP function
Hi Gurus,
We are using SAP BW 3.0B version.
I need to convert data in ODS to XML format and send this XML file to remote server which is not a SAP application server, it is just a Window Based file server with FTP function..
By writing some ABAP code I have converted ODS data into XML format (which gets saved in my local system)
(Is that I need to put this file in Application Server to send it to the other servers? )
Now the thing is how I can send this file to that Windows Based file server.
plz suggest me.... what can be done......
Thanks in Advance
Madhusudhan
Edited by: Madhusudhan Raju on Dec 3, 2009 4:25 AMI dont think the above code support windows OS. Because I always execute this script via UNIX.
I think you can try this option, go to command prompt, goto the destination path where you have an XML file using cd....
ftp (destination servername), specify the username and password.
afterthat, use the command put and filename.
check whether the file had reached destination successfully or not.
For automation purpose, you can use the following script like
ftp: -s: test.txt (servername)
In test.txt,
UserName
Password
bin
cd /files
put file.xml
bye
Also, you can check in SM69, there will be some SAP external commands to automate the file transfer.
Thanks
Sat
http://support.microsoft.com/?kbid=96269 -
FTP to file server - file not reached to file server but in XI success
Hi
Scenario is
XI is picking file from SAP and sending to a file server. In XI ,communication channel and sxi_moni shows message transferred successfully.
But the file server guys din't receive any file. Can any one tell where the message can be lost. If file is not reaching destination then how come in XI its showing SUCCESSFUL message.
RegardsHi,
Your communication channel is not able to connect with the FTP sever.
Check in RWB the communication channel log also user id, password mentioned in communication channel.
Check whether that user has authorization to create file on FTP sever. -
NW ftp 550 File Server unavailable
FTP service running on one NW 6.5 sp8 server (//server6) in the tree.
I have rights to all servers in the tree.
All file servers are Netware 6.5 sp8
My home directory and default ftp directory is //server1/data/home/me.
Within an ftp session I can
cd //server2/data/dept
but when I try
cd //server3/data/dept
I get the message "550 File Server unavailable".
I have a department whose home directories and department share are on //server3 and I need to enable ftp to those areas. The only difference I can think of between Server 2 and Server3 is that server3 also runs AFP - does that get in the way of Netware ftp?
How do I troubleshoot the ftp connection to Server3?
TIA
AnthonyThank you, Andrew, for the continued interest.
I have downloaded and applied the newer nwftpd.nlm, unfortunately it hasn't resolved the problem.
I aslo found TID 10060796 Error: "550 File Server Unavailable" after FTP cd to another server which suggests slp problems. The test suggested does show the problem server in the available novell.bindery services from the server runing nwftpd. Any clues what or how to troublshoot if ths is an SLP problem aslo appreciated.
ftpserv.cfg follows
Anthony
#FTPSERVER Configuration File
#Format: A comment line starts with #
#Each Configuration Parameter is in a single line of form
#parameter=value.
#List of Configuration Parameters with their Values:
#IP address of the host on which FTP Server is being loaded. If parameter
# not specified, it binds to the local host
HOST_IP_ADDR = 163.160.107.2
#The public IP address to be exposed in a passive reply to FTP clients. This
#address need not to be bound to the NetWare server. It usually binds
#to a NAT device which routes between a private FTP server and a public FTP client.
#If remarked out or set to 0.0.0.0, FTP server uses the HOST_IP_ADDR
FORCE_PASSIVE_ADDR = 0.0.0.0
#Port Number to which FTP Server should bind and listen for connection requests.
#Port Number Range = 1-65535
#If not within the specified range, it binds to the default port 21
FTP_PORT = 21
#Maximun number of ftp sessions. Default value is 30
MAX_FTP_SESSIONS = 30
#Time duration in seconds for which the session can remain idle. Default value
#is 600
IDLE_SESSION_TIMEOUT = 600
#Default of NO allows both secure and insecure connections. YES
#requires clients to use secure Control connections (for usernames,
#passwords, commands) but allows Data connections to be insecure
#(directory list output, file transfers). STRICT requires both Control
#and Data connections be secure.
SECURE_CONNECTIONS_ONLY = No
#FTP Servers Default NameSpace. Default value is LONG
DEFAULT_NAMESPACE = LONG
#Data buffer size specifies the size in kilobytes for transfer buffer.
#This parameter value can be set based on availability of system memory.
#The default value is 64 kilobytes. The range allowed is 4 kilobytes
#to 1020 kilobytes.
DATA_BUFF_SIZE = 64
#Keep Alive timeout (in minutes) closes connections which may be broken on one
#side. This can be varied depending on the usage of the FTP Service. Typically
#10 minutes is sufficient, but in cases with frequently broken connections (as
#is common with dial-up connections), the timeout can be decreased to clear
#broken connections faster. Some FTP clients may process keep alive packets
#incorrectly, in which case the timeout can be increased or disabled to allow
#longer sessions without a keep alive check. The range allowed is 5 minutes to
#120 minutes. Any value less than 0 min will be taken as 0 (zero) which means
#no keep alive check will be done. Any value between 1 and 4 min (both
#inclusive) or greater than 120 min will be taken as 120 min. Default value
#is 10
KEEPALIVE_TIME = 10
#Path of welcome banner file. Default value is sys:/etc/welcome.txt
WELCOME_BANNER = sys:/etc/welcome.txt
#Message File Name. Default value is message.txt
MESSAGE_FILE = message.txt
#Minimum Port Number for Passive Connection. Default value is 1
PASSIVE_PORT_MIN = 1
#Maximum Port Number for Passive Connection. Default value is 65534
PASSIVE_PORT_MAX = 65534
#Pseudo-Server flag parameter specifies how the Netware FTP server should
#simulate Unix FTP server behavior. It can take decimal values from 0-3
#(both inclusive). This value is converted to binary format and each bit
#is assigned a behavior. The LSB (least significant bit) denotes the
#format that the permissions should be sent to the FTP client during a
#directory listing. If it is set to 1, Unix-like format is sent. By
#default the permissions are sent in NetWare trustee rights format. The
#previous bit to LSB denotes the reply string that is sent for 'SYST'
#command. If it is set to 1, the string will be 'UNIX Type: L8'. By
#default it is 'NETWARE Type: L8'. Default Value is 0.
PSEUDO_SERVER_FLAG = 3
#File Permissions parameter specifies the Pseudo permissions displayed for
#files in the FTP client. This does not impact the actual trustee rights
#available for the files in any way. This parameter is taken into
#consideration only when the PSEUDO_SERVER_FLAG parameter's LSB is set to
#1. (i.e. when it's decimal value is 1 or 3). Otherwise this is ignored.
#The value must be a three digit octal value.
#Maximum value is 777. Default value is 644.
PSEUDO_FILE_PERMISSIONS = 644
#Directory Permissions parameter specifies the Pseudo permissions displayed
#for directories in the FTP client. This does not impact the actual trustee
#rights available for the files in any way. This parameter is taken into
#consideration only when the PSEUDO_SERVER_FLAG parameter's LSB is set to
#1. (i.e. when it's decimal value is 1 or 3). Otherwise this is ignored.
#The value must be a three digit octal value.
#Maximum value is 777. Default value is 755.
PSEUDO_DIR_PERMISSIONS = 755
#Server where the default home of users is present. If not specified
#it stays on the local server. Specify the server name only
DEFAULT_USER_HOME_SERVER = LTHSMTP
#Default home directory of the user. Default value is sys:/public
DEFAULT_USER_HOME = sys:/public
#Specifies whether to ignore home directory if it is on remote server
#and stay on the local server. Default value is NO
IGNORE_REMOTE_HOME = No
#Specifies whether to ignore home directory and stay on default directory.
#Default value is NO
IGNORE_HOME_DIR = No
#Default FTP Context specifies the default context in which the users
#will be searched. Specify this as fully distinguished name (FDN).
#If you do not set the default FTP context, the bindery context of the server,
#if available, is set as default FTP context, otherwise the context of the
#server object is used.
DEFAULT_FTP_CONTEXT = .OU=ResultsFTP.O=ULTH
#Search list has a list of full DN names of containers separated by
#commas, from where the search should start for users. Maximum number of
#containers allowed is 30. The value should not exceed 2048 bytes. If you
#do not set any search containers, search will start from the server's
#default context. To enable searching the user in the subtree under a search
#container, append ':s' to the search container.
SEARCH_LIST = .OU=ResultsFTP.O=ULTH,.OU=Medical Illustration.OU=Corporate.O=Leedsth
#Path of FTP user restrictions file. Default value is sys:/etc/ftprest.txt
RESTRICT_FILE = sys:/etc/ftprest.txt
#To Allow or Deny Access to Anonymous Users. Default value is NO
ANONYMOUS_ACCESS = No
#Home Directory for Anonymous users. Specify complete path including the
#volume name <vol:[/dir/...]>. Default value is sys:/public
ANONYMOUS_HOME = sys:/public
#Get email address as password for anonymous user access.
#Default value is YES
ANONYMOUS_PASSWORD_REQUIRED = No
#If Intruder checking not required set INTRUDER_USER_ATTEMPTS
#& INTRUDER_HOST_ATTEMPTS = 0
#Number of invalid login attempts for intruder host detection.
#Default value is 20
INTRUDER_HOST_ATTEMPTS = 20
#Time interval in Minutes during which the intruder host is not allowed to
#login. Default value is 5
HOST_RESET_TIME = 5
#Number of invalid login attempts for intruder user detection.
#Default value is 5
INTRUDER_USER_ATTEMPTS = 5
#Time interval in Minutes during which the intruder user is not allowed to
#login. Default value is 10
USER_RESET_TIME = 10
#FTP Log file creation directory. Default value is sys:/etc
FTP_LOG_DIR = sys:/etc
#Maximum size of the log files in KB, up to which messages will be logged.
#The range allowed is 1 to 4194303. Default value is 1024.
MAX_LOG_SIZE = 1024
#Logging Level of FTP Log Files. Default value is 7
FTP_LOG_LEVEL = 7
#FTP Daemon log file path - System log msgs. Default value is ftpd
FTPD_LOG = ftpd
#Audit log file path - general log msgs. Default value is ftpaudit
AUDIT_LOG = ftpaudit
#Intruder log file path - Intruder log msgs. Default value is ftpintr
INTRUDER_LOG = ftpintr
#Statistics log file path - Statistics history log msgs.
#Default value is ftpstat
STAT_LOG = ftpstat
#To allow or deny execution of site commands. Default value is NO.
#NOTE: This parameter is not documented elsewhere.
DISABLE_SITE_CMDS = NO
#To enable or disable prefixing the command argument path to the results
#while directory listing.
#WARNING: For full FTP functionality, this parameter should be set to NO.
#Setting it to YES can cause certain operations which rely on paths to
#fail. This parameter is not documented elsewhere. Default value of NO
#is the only officially supported setting.
DISABLE_PATH_DIR_LISTING = NO
#To improve download performance for files residing locally on the FTP Server,
#use YES. Note: This will not give improved performance for record structure
#file transfers, nor for files residing on a remote server. Default value is NO
TRANSMITFILE_SUPPORT = No
# The following parameters need not be configured before starting the #
# FTP Server #
#Specify YES to unload the nwftpd instance corresponding to this
#configuration file. Instance can also be unloaded from the console by
#nwftpd -u <Configuration File Path>
UNLOAD_THIS_INSTANCE = No
#Specify YES to clear all existing intruder hosts and intruder users
CLEAR_EXISTING_INTRUDERS = No -
Need to ftp files(BACS) from Server to Users Local Machine-Urgent
Hello,
I am working on a Oracle HRMS Implementation(11i) and have a requirement wher I need to ftp files (BACS File) from a server to Users Local Machine.
Please let me know any scripts or the way forward to achieve the same using a concurrent program.
Thanks a lot!That requires the users machine for a ftp server installed and to be "visible" to the conc program server, the first one requiring setup and configure for every client and the second one may be a problem if in different segments or security policies. Another approach may be to generate the files on the server in a known location and from the client create a batch script to connect to that server and retrieve the file(s). You may schedule the program to run at certain hours or use a shortcut so the user can run it on demand
-
Is it possible to upload large files through FTP to server with iWeb?
Is it possible to upload large files through FTP to server with iWeb like for example with Cyberduck?
I don't need to publish website with files, I just need to upload files on server. Can it be done somehow with iWeb?Here's some info about FTP...
http://www.iwebformusicians.com/Search-Engine-Optimization/Upload.html
Make sure you are allowed to store files on your server. Most hosting services don't allow anything to be stored that can't be accessed via the internet. Check the fine print! -
Sending empty files using SFTP Adapter
I am trying to send empty files using SFTP adapter. The interface has to send the file whether its empty file or containing data using SFTP adapter. I am using BizTalk Server 2013 R2. Is it a bug or the hotfix is already there for this issue.
The issue here is not your SFTP not able to send 0KB files, but the file receive adapter that is receiving the file. The file adapter deletes 0 KB files and doest not transmit it further.
If u have a ftp receive for example you should be able to send 0KB files.
If u have a custom file receive adapter , is it handling 0KB files ?
Regards <br/> When you see answers and helpful posts,<br/> please click Vote As Helpful, Propose As Answer, and/or Mark As Answer -
Need to transfer files using sftp via java api's.
Hi,
I got a requirement to transfer files using sftp via java api's.
Kindly specify any 3rd party Java Libraray to do this.
The requirements are
-It must support extensive encryption algorithms.
-It must allow generating public/private keys and authenticating with server by sending the keys first(before the actual file transmission).
Thanks.Don't resurrect old threads, please. Start your own thread.
Better yet: google for "Java SFTP", look at what you find and come back when you have a specific question.
And: when you ask a specific question, then clarify if you're talking about the [SSH file transfer protocol|http://en.wikipedia.org/wiki/SSH_file_transfer_protocol] or about FTPS, which is sometimes (wrongly) called SFTP. -
How to show FTP Files in JTable, i gave codeeeee
hi to all,
plz any one can help me to show FTP Files in JTable, my FTP code is below,where i can upload and download files, i can list the files in JText Area , i want to show files in JTable, plz any on can post some code which can slove my problem
import java.net.*;
import java.io.*;
import java.util.*;
public class CFtp
static final boolean debug = false;
public static final int FTP_PORT = 21;
static int FTP_UNKNOWN = -1;
static int FTP_SUCCESS = 1;
static int FTP_TRY_AGAIN = 2;
static int FTP_ERROR = 3;
static int FTP_NOCONNECTION = 100;
static int FTP_BADUSER = 101;
static int FTP_BADPASS = 102;
public static int FILE_GET = 1;
public static int FILE_PUT = 2;
/** socket for data transfer */
private Socket dataSocket = null;
private boolean replyPending = false;
private boolean binaryMode = false;
private boolean passiveMode = false;
private boolean m_bGettingFile = false;
/** user name for login */
String user = null;
/** password for login */
String password = null;
/** last command issued */
public String command;
/** The last reply code from the ftp daemon. */
int lastReplyCode;
/** Welcome message from the server, if any. */
public String welcomeMsg;
/** Array of strings (usually 1 entry) for the last reply
from the server. */
protected Vector serverResponse = new Vector(1);
/** Socket for communicating with server. */
protected Socket serverSocket = null;
/** Stream for printing to the server. */
public PrintWriter serverOutput;
/** Buffered stream for reading replies from server. */
public InputStream serverInput;
/* String to hold the file we are up/downloading */
protected String strFileNameAndPath;
protected String m_strSource;
protected String m_strDestination;
public void setFilename( String strFile ) {
strFileNameAndPath = strFile;
String getFileName() {
return strFileNameAndPath;
public void setSourceFile(String strSourceFile) {
m_strSource = strSourceFile;
public void setDestinationFile(String strDestinationFile) {
m_strDestination = strDestinationFile;
public String getSourceFile() {
return m_strSource;
public String getDestinationFile() {
return m_strDestination;
void getCurrentDirectory() {
// return CSystem.getCurrentDir();
/** Return server connection status */
public boolean serverIsOpen() {
return serverSocket != null;
/**Set Passive mode Trasfers*/
public void setPassive(boolean mode) {
passiveMode = mode;
public int readServerResponse() throws IOException {
StringBuffer replyBuf = new StringBuffer(32);
int c;
int continuingCode = -1;
int code = -1;
String response;
try {
while (true) {
while ((c = serverInput.read()) != -1) {
if (c == '\r') {
if ((c = serverInput.read()) != '\n') {
replyBuf.append('\r');
replyBuf.append((char)c);
if (c == '\n')
break;
response = replyBuf.toString();
replyBuf.setLength(0);
try {
code = Integer.parseInt(response.substring(0, 3));
catch (NumberFormatException e) {
code = -1;
catch (StringIndexOutOfBoundsException e) {
/* this line doesn't contain a response code, so
we just completely ignore it */
continue;
serverResponse.addElement(response);
if (continuingCode != -1) {
/* we've seen a XXX- sequence */
if (code != continuingCode || (response.length() >= 4 && response.charAt(3) == '-')) {
continue;
else {
/* seen the end of code sequence */
continuingCode = -1;
break;
else if (response.length() >= 4 && response.charAt(3) == '-') {
continuingCode = code;
continue;
else {
break;
catch(Exception e) {
e.printStackTrace();
if (debug) {
// CSystem.PrintDebugMessage("readServerResponse done");
return lastReplyCode = code;
/** Sends command <i>cmd</i> to the server. */
public void sendServer(String cmd) {
if (debug) {
// CSystem.PrintDebugMessage("sendServer start");
serverOutput.println(cmd);
if (debug) {
// CSystem.PrintDebugMessage("sendServer done");
/** Returns all server response strings. */
public String getResponseString() {
String s = new String();
for(int i = 0;i < serverResponse.size();i++) {
s+=serverResponse.elementAt(i);
serverResponse = new Vector(1);
return s;
public String getResponseStringNoReset() {
String s = new String();
for(int i = 0;i < serverResponse.size();i++) {
s+=serverResponse.elementAt(i);
return s;
* issue the QUIT command to the FTP server and close the connection.
public void closeServer() throws IOException {
if (serverIsOpen()) {
issueCommand("QUIT");
if (! serverIsOpen()) {
return;
serverSocket.close();
serverSocket = null;
serverInput = null;
serverOutput = null;
protected int issueCommand(String cmd) throws IOException {
command = cmd;
int reply;
if (debug) {
// CSystem.PrintDebugMessage(cmd);
if (replyPending) {
if (debug) {
// CSystem.PrintDebugMessage("replyPending");
if (readReply() == FTP_ERROR) {
System.out.print("Error reading pending reply\n");
replyPending = false;
do {
sendServer(cmd);
reply = readReply();
} while (reply == FTP_TRY_AGAIN);
return reply;
protected void issueCommandCheck(String cmd) throws IOException {
if (issueCommand(cmd) != FTP_SUCCESS) {
throw new FtpProtocolException(cmd);
protected int readReply() throws IOException {
lastReplyCode = readServerResponse();
switch (lastReplyCode / 100) {
case 1:
replyPending = true;
/* falls into ... */
case 2://This case is for future purposes. If not properly used, it might cause an infinite loop.
//Don't add any code here , unless you know what you are doing.
case 3:
return FTP_SUCCESS;
case 5:
if (lastReplyCode == 530) {
if (user == null) {
throw new FtpLoginException("Not logged in");
return FTP_ERROR;
if (lastReplyCode == 550) {
if (!command.startsWith("PASS")) {
throw new FileNotFoundException(command);
else {
throw new FtpLoginException("Error: Wrong Password!");
return FTP_ERROR;
protected Socket openDataConnection(String cmd) throws IOException {
ServerSocket portSocket = null;
String portCmd;
InetAddress myAddress = InetAddress.getLocalHost();
byte addr[] = myAddress.getAddress();
int shift;
String ipaddress;
int port = 0;
IOException e;
if (this.passiveMode) {
// CSystem.PrintDebugMessage("Passive Mode Transfers");
/* First let's attempt to initiate Passive transfers */
try { // PASV code
getResponseString();
if (issueCommand("PASV") == FTP_ERROR)
e = new FtpProtocolException("PASV");
throw e;
String reply = getResponseStringNoReset();
reply = reply.substring(reply.indexOf("(")+1,reply.indexOf(")"));
StringTokenizer st = new StringTokenizer(reply, ",");
String[] nums = new String[6];
int i = 0;
while(st.hasMoreElements())
try
nums[i] = st.nextToken();
i++;
catch(Exception a)
a.printStackTrace();
ipaddress = nums[0]+"."+nums[1]+"."+nums[2]+"."+nums[3];
try
int firstbits = Integer.parseInt(nums[4]) << 8;
int lastbits = Integer.parseInt(nums[5]);
port = firstbits + lastbits;
catch(Exception b)
b.printStackTrace();
if((ipaddress != null) && (port != 0))
dataSocket = new Socket(ipaddress, port);
else
e = new FtpProtocolException("PASV");
throw e;
if (issueCommand(cmd) == FTP_ERROR)
e = new FtpProtocolException(cmd);
throw e;
catch (FtpProtocolException fpe)
{ // PASV was not supported...resort to PORT
portCmd = "PORT ";
/* append host addr */
for (int i = 0; i < addr.length; i++)
portCmd = portCmd + (addr[i] & 0xFF) + ",";
/* append port number */
portCmd = portCmd + ((portSocket.getLocalPort() >>> 8) & 0xff) + ","
+ (portSocket.getLocalPort() & 0xff);
if (issueCommand(portCmd) == FTP_ERROR) {
e = new FtpProtocolException("PORT");
portSocket.close();
throw e;
if (issueCommand(cmd) == FTP_ERROR) {
e = new FtpProtocolException(cmd);
portSocket.close();
throw e;
dataSocket = portSocket.accept();
portSocket.close();
}//end if passive
else
{ //do a port transfer
// CSystem.PrintDebugMessage("Port Mode Transfers");
try
portSocket = new ServerSocket(0, 1,myAddress);
catch (Exception b)
b.printStackTrace();
portCmd = "PORT ";
/* append host addr */
for (int i = 0; i < addr.length; i++) {
portCmd = portCmd + (addr[i] & 0xFF) + ",";
/* append port number */
portCmd = portCmd + ((portSocket.getLocalPort() >>> 8) & 0xff) + ","
+ (portSocket.getLocalPort() & 0xff);
if (issueCommand(portCmd) == FTP_ERROR) {
e = new FtpProtocolException("PORT");
portSocket.close();
throw e;
if (issueCommand(cmd) == FTP_ERROR) {
e = new FtpProtocolException(cmd);
portSocket.close();
throw e;
dataSocket = portSocket.accept();
portSocket.close();
}//end of port transfer
return dataSocket; // return the dataSocket
/** open a FTP connection to host <i>host</i>. */
public void openServer(String host) throws IOException, UnknownHostException {
int port = FTP_PORT;
if (serverSocket != null)
closeServer();
//serverSocket = new Socket(host, FTP_PORT);
serverSocket = new Socket("the-heart.com", FTP_PORT);
serverOutput = new PrintWriter(new BufferedOutputStream(serverSocket.getOutputStream()),true);
serverInput = new BufferedInputStream(serverSocket.getInputStream());
/** open a FTP connection to host <i>host</i> on port <i>port</i>. */
public void openServer(String host, int port) throws IOException, UnknownHostException {
if (serverSocket != null)
closeServer();
serverSocket = new Socket(host, port);
//serverSocket.setSoLinger(true,30000);
serverOutput = new PrintWriter(new BufferedOutputStream(serverSocket.getOutputStream()),
true);
serverInput = new BufferedInputStream(serverSocket.getInputStream());
System.out.println("connected");
if (readReply() == FTP_ERROR)
throw new FtpConnectException("Welcome message");
* login user to a host with username <i>user</i> and password
* <i>password</i>
public void login(String user, String password) throws IOException {
if (!serverIsOpen())
throw new FtpLoginException("Error: not connected to host.\n");
this.user = user;
this.password = password;
System.out.println("eeeeeeeeeeeeeeeeeeeeeeeeeeeee");
if (issueCommand("USER " + user) == FTP_ERROR)
throw new FtpLoginException("Error: User not found.\n");
if (password != null && issueCommand("PASS " + password) == FTP_ERROR)
throw new FtpLoginException("Error: Wrong Password.\n");
* login user to a host with username <i>user</i> and no password
* such as HP server which uses the form "<username>/<password>,user.<group>
public void login(String user) throws IOException
if (!serverIsOpen())
throw new FtpLoginException("not connected to host");
this.user = user;
if (issueCommand("USER " + user) == FTP_ERROR)
throw new FtpLoginException("Error: Invalid Username.\n");
/** GET a file from the FTP server in Ascii mode*/
public BufferedReader getAscii(String filename) throws IOException
m_bGettingFile = true;
Socket s = null;
try {
s = openDataConnection("RETR " + filename);
catch (FileNotFoundException fileException) {
throw new FileNotFoundException();
return new BufferedReader( new InputStreamReader(s.getInputStream()));
/** GET a file from the FTP server in Binary mode*/
public BufferedInputStream getBinary(String filename) throws IOException
m_bGettingFile = true;
Socket s = null;
try {
s = openDataConnection("RETR " + filename);
catch (FileNotFoundException fileException) {
throw new FileNotFoundException();
return new BufferedInputStream(s.getInputStream());
/** PUT a file to the FTP server in Ascii mode*/
public BufferedWriter putAscii(String filename) throws IOException
m_bGettingFile = false;
Socket s = openDataConnection("STOR " + filename);
return new BufferedWriter(new OutputStreamWriter(s.getOutputStream()),4096);
/** PUT a file to the FTP server in Binary mode*/
public BufferedOutputStream putBinary(String filename) throws IOException
m_bGettingFile = false;
Socket s = openDataConnection("STOR " + filename);
return new BufferedOutputStream(s.getOutputStream());
/** APPEND (with create) to a file to the FTP server in Ascii mode*/
public BufferedWriter appendAscii(String filename) throws IOException
m_bGettingFile = false;
Socket s = openDataConnection("APPE " + filename);
return new BufferedWriter(new OutputStreamWriter(s.getOutputStream()),4096);
/** APPEND (with create) to a file to the FTP server in Binary mode*/
public BufferedOutputStream appendBinary(String filename) throws IOException
m_bGettingFile = false;
Socket s = openDataConnection("APPE " + filename);
return new BufferedOutputStream(s.getOutputStream());
/** NLIST files on a remote FTP server */
public BufferedReader nlist() throws IOException
Socket s = openDataConnection("NLST");
return new BufferedReader( new InputStreamReader(s.getInputStream()));
/** LIST files on a remote FTP server */
public BufferedReader list() throws IOException
Socket s = openDataConnection("LIST");
return new BufferedReader( new InputStreamReader(s.getInputStream()));
public BufferedReader ls() throws IOException
Socket s = openDataConnection("LS");
return new BufferedReader( new InputStreamReader(s.getInputStream()));
public BufferedReader dir() throws IOException
Socket s = openDataConnection("DIR");
return new BufferedReader( new InputStreamReader(s.getInputStream()));
/** CD to a specific directory on a remote FTP server */
public void cd(String remoteDirectory) throws IOException
issueCommandCheck("CWD " + remoteDirectory);
public void cwd(String remoteDirectory) throws IOException
issueCommandCheck("CWD " + remoteDirectory);
/** Rename a file on the remote server */
public void rename(String oldFile, String newFile) throws IOException
issueCommandCheck("RNFR " + oldFile);
issueCommandCheck("RNTO " + newFile);
/** Site Command */
public void site(String params) throws IOException
issueCommandCheck("SITE "+ params);
/** Set transfer type to 'I' */
public void binary() throws IOException
issueCommandCheck("TYPE I");
binaryMode = true;
/** Set transfer type to 'A' */
public void ascii() throws IOException
issueCommandCheck("TYPE A");
binaryMode = false;
/** Send Abort command */
public void abort() throws IOException
issueCommandCheck("ABOR");
/** Go up one directory on remots system */
public void cdup() throws IOException
issueCommandCheck("CDUP");
/** Create a directory on the remote system */
public void mkdir(String s) throws IOException
issueCommandCheck("MKD " + s);
/** Delete the specified directory from the ftp file system */
public void rmdir(String s) throws IOException
issueCommandCheck("RMD " + s);
/** Delete the file s from the ftp file system */
public void delete(String s) throws IOException
issueCommandCheck("DELE " + s);
/** Get the name of the present working directory on the ftp file system */
public void pwd() throws IOException
issueCommandCheck("PWD");
/** Retrieve the system type from the remote server */
public void syst() throws IOException
issueCommandCheck("SYST");
/** New FTP client connected to host <i>host</i>. */
public CFtp(String host) throws IOException
openServer(host, FTP_PORT);
/** New FTP client connected to host <i>host</i>, port <i>port</i>. */
public CFtp(String host, int port) throws IOException
openServer(host, port);
public CFtp() {
// TODO Auto-generated constructor stub
public void SetFileMode(int nMode)
if (nMode == FILE_GET)
m_bGettingFile = true;
else
m_bGettingFile = false;
public static void main(String[] args){
CFtp ftp=new CFtp();
// Exception handlers
class FtpLoginException extends FtpProtocolException
FtpLoginException(String s)
super(s);
class FtpConnectException extends FtpProtocolException
FtpConnectException(String s)
super(s);
class FtpProtocolException extends IOException
FtpProtocolException(String s)
super(s);
}It's jakarta :)
The jakarta class:
/* <!-- in case someone opens this in a browser... --> <pre> */
import org.apache.commons.net.ftp.*;
import java.util.Vector;
import java.io.*;
import java.net.UnknownHostException;
/** This is a simple wrapper around the Jakarta Commons FTP
* library. I really just added a few convenience methods to the
* class to suit my needs and make my code easier to read.
* <p>
* If you want more information on the Jakarta Commons libraries
* (there is a LOT more you can do than what you see here), go to:
* http://jakarta.apache.org/commons
* <p>
* This Java class requires both the Jakarta Commons Net library
* and the Jakarta ORO library (available at http://jakarta.apache.org/oro ).
* Make sure you have both of the jar files in your path to compile.
* Both are free to use, and both are covered under the Apache license
* that you can read on the apache.org website. If you plan to use these
* libraries in your applications, please refer to the Apache license first.
* While the libraries are free, you should double-check to make sure you
* don't violate the license by using or distributing it (especially if you use it
* in a commercial application).
* <p>
* Program version 1.0. Author Julian Robichaux, http://www.nsftools.com
* @author Julian Robichaux ( http://www.nsftools.com )
* @version 1.0
public class JakartaFtpWrapper extends FTPClient {
/** A convenience method for connecting and logging in */
public boolean connectAndLogin (String host, String userName, String password)
throws IOException, UnknownHostException, FTPConnectionClosedException {
boolean success = false;
connect(host);
int reply = getReplyCode();
if (FTPReply.isPositiveCompletion(reply))
success = login(userName, password);
if (!success)
disconnect();
return success;
/** Turn passive transfer mode on or off. If Passive mode is active, a
* PASV command to be issued and interpreted before data transfers;
* otherwise, a PORT command will be used for data transfers. If you're
* unsure which one to use, you probably want Passive mode to be on. */
public void setPassiveMode(boolean setPassive) {
if (setPassive)
enterLocalPassiveMode();
else
enterLocalActiveMode();
/** Use ASCII mode for file transfers */
public boolean ascii () throws IOException {
return setFileType(FTP.ASCII_FILE_TYPE);
/** Use Binary mode for file transfers */
public boolean binary () throws IOException {
return setFileType(FTP.BINARY_FILE_TYPE);
/** Download a file from the server, and save it to the specified local file */
public boolean downloadFile (String serverFile, String localFile)
throws IOException, FTPConnectionClosedException {
FileOutputStream out = new FileOutputStream(localFile);
boolean result = retrieveFile(serverFile, out);
out.close();
return result;
/** Upload a file to the server */
public boolean uploadFile (String localFile, String serverFile)
throws IOException, FTPConnectionClosedException {
FileInputStream in = new FileInputStream(localFile);
boolean result = storeFile(serverFile, in);
in.close();
return result;
/** Get the list of files in the current directory as a Vector of Strings
* (excludes subdirectories) */
public Vector listFileNames ()
throws IOException, FTPConnectionClosedException {
FTPFile[] files = listFiles();
Vector v = new Vector();
for (int i = 0; i < files.length; i++) {
if (!files.isDirectory())
v.addElement(files[i].getName());
return v;
/** Get the list of files in the current directory as a single Strings,
* delimited by \n (char '10') (excludes subdirectories) */
public String listFileNamesString ()
throws IOException, FTPConnectionClosedException {
return vectorToString(listFileNames(), "\n");
/** Get the list of subdirectories in the current directory as a Vector of Strings
* (excludes files) */
public Vector listSubdirNames ()
throws IOException, FTPConnectionClosedException {
FTPFile[] files = listFiles();
Vector v = new Vector();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory())
v.addElement(files[i].getName());
return v;
/** Get the list of subdirectories in the current directory as a single Strings,
* delimited by \n (char '10') (excludes files) */
public String listSubdirNamesString ()
throws IOException, FTPConnectionClosedException {
return vectorToString(listSubdirNames(), "\n");
/** Convert a Vector to a delimited String */
private String vectorToString (Vector v, String delim) {
StringBuffer sb = new StringBuffer();
String s = "";
for (int i = 0; i < v.size(); i++) {
sb.append(s).append((String)v.elementAt(i));
s = delim;
return sb.toString();
and then there is the jar file:
http://jakarta.apache.org/site/downloads/
so for the wrapper.listfiles() you have to declare the wrapper as JakartaFtpWrapper. -
Issue with Ftp Client / Server using Sockets
I have developed a Ftp Client and a Ftp Server. The client Connects to the Ftp Server and sends files to the ftp server. It is a multi threaded server and can have multiple clients connecting to it.
If a client goes down...the server waits till the client comes up
Similarly the client waits if a server goes down and reconnects when the server is again up and running
i am having a strange issue here. When two clients go down and reconnect to the server...They take a long time to connect and transferring of files takes a long time...
Other wise in all other scenarios the duo work properly.
Any feedback and suggestion about this strange issue from all you java gurus out there will be deeply appreciated.
Here is the client code
import java.net.*;
import java.net.Socket;
import java.net.InetAddress;
import java.io.*;
import java.io.File;
import java.util.*;
import java.lang.*;
import java.lang.Object;
import javax.crypto.*;
import java.util.regex.*;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
import java.security.spec.AlgorithmParameterSpec;
import java.security.spec.KeySpec;
import java.io.InputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.File.*;
import java.nio.channels.FileLock;
public class FTPClient {
public static void main(String[] args) throws Exception
Timer timer = new Timer("Test Timer");
timer.scheduleAtFixedRate(new TimerTask()
private int counter = 0;
public void run() {
try {
System.out.println(counter++);
Socket soc=new Socket("xxx.x.x.xx",5217);
System.out.println("Socket Initialised.");
transferfileClient t=new transferfileClient(soc);
t.SendFile();
System.out.println("run complete.");
catch(Exception ex)
}, 10000, 40000);
static class transferfileClient
Socket ClientSoc;
DataInputStream din;
DataOutputStream dout;
BufferedReader br;
transferfileClient(Socket soc)
try
ClientSoc=soc;
din=new DataInputStream(ClientSoc.getInputStream());
dout=new DataOutputStream(ClientSoc.getOutputStream());
br=new BufferedReader(new InputStreamReader(System.in));
catch(Exception ex)
//encrypto routine starts
class DesEncrypter {
Cipher ecipher;
Cipher dcipher;
// 8-byte Salt
byte[] salt = {
(byte)0xA9, (byte)0x9B, (byte)0xC8, (byte)0x32,
(byte)0x56, (byte)0x35, (byte)0xE3, (byte)0x03
// Iteration count
int iterationCount = 19;
DesEncrypter(String passPhrase) {
try {
// Create the key
KeySpec keySpec = new PBEKeySpec(passPhrase.toCharArray(), salt, iterationCount);
SecretKey key = SecretKeyFactory.getInstance(
"PBEWithMD5AndDES").generateSecret(keySpec);
ecipher = Cipher.getInstance(key.getAlgorithm());
dcipher = Cipher.getInstance(key.getAlgorithm());
// Prepare the parameter to the ciphers
AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount);
// Create the ciphers
ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec);
} catch (java.security.InvalidAlgorithmParameterException e) {
} catch (java.security.spec.InvalidKeySpecException e) {
} catch (javax.crypto.NoSuchPaddingException e) {
} catch (java.security.NoSuchAlgorithmException e) {
} catch (java.security.InvalidKeyException e) {
// Buffer used to transport the bytes from one stream to another
byte[] buf = new byte[1024];
public void encrypt(InputStream in, OutputStream out) {
try {
// Bytes written to out will be encrypted
out = new CipherOutputStream(out, ecipher);
// Read in the cleartext bytes and write to out to encrypt
int numRead = 0;
while ((numRead = in.read(buf)) >= 0) {
out.write(buf, 0, numRead);
out.close();
} catch (java.io.IOException e) {
public void decrypt(InputStream in, OutputStream out) {
try {
// Bytes read from in will be decrypted
in = new CipherInputStream(in, dcipher);
// Read in the decrypted bytes and write the cleartext to out
int numRead = 0;
while ((numRead = in.read(buf)) >= 0) {
out.write(buf, 0, numRead);
out.close();
} catch (java.io.IOException e) {
} //encryptor routine ends
void SendFile() throws Exception
try
String directoryName;
// File object referring to the directory.
String[] files; // Array of file names in the directory.
//directory = new File ( "C:\\FTP\\" ) ;
File directory1 = new File("C:\\FTP");
boolean successmk = directory1.mkdir();
if (!successmk) {
// Directory creation failed /Already Exists
File directory = new File("C:\\FTP\\ftpc");
boolean successmk1 = directory.mkdir();
if (!successmk1) {
// Directory creation failed /Already Exists
//directory = new File ( "E:\\FTP-encrypted" ) ;
if (directory.isDirectory() == false) {
if (directory.exists() == false)
System.out.println("There is no such directory!");
else
System.out.println("That file is not a directory.");
else {
files = directory.list();
System.out.println("Files in directory \"" + directory + "\":");
for (int i = 0; i < files.length; i++)
String patternStr = "xml";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(files);
boolean matchFound = matcher.find();
if (matchFound) {
System.out.println(" " + files[i]);
String filename;
filename=files[i];
File f=new File(directory,filename);
FileLock lock = null;
FileOutputStream fos = new FileOutputStream(f, true);
lock = fos.getChannel().tryLock();
if (lock == null) {
System.out.println(" Failed to get the file lock: means that the file is locked by other instance.");
fos.close();
else
InetAddress addr = InetAddress.getLocalHost();
// Get IP Address
//byte[] ipAddr = addr.getAddress();
String ip= addr.toString();
// Get hostname
//String hostname = addr.getHostName();
System.out.println(" Lock Acquired.");
lock.release();
fos.close();
dout.writeUTF("SEND");
dout.writeUTF(ip);
dout.writeUTF(filename);
//String msgFromServer=din.readUTF();
DesEncrypter encrypter = new DesEncrypter("My Pass Phrase!");
// Encrypt
FileInputStream fino=new FileInputStream(f);
encrypter.encrypt(fino,
new FileOutputStream("ciphertext.txt"));
fino.close();
FileInputStream fin=new FileInputStream("ciphertext.txt");
int ch;
do
ch=fin.read();
dout.writeUTF(String.valueOf(ch));
while(ch!=-1);
fin.close();
String option;
option=din.readUTF();
if((option.compareTo("Delete")==0))
boolean success = (new File("ciphertext.txt")).delete();
boolean success1 = f.delete();
if (success) {
System.out.println("File Sent ...");
if (success1) {
System.out.println("--File deleted from Client ...");
for (int j = 0; j < 999999999; j++){}
}//pattermatch loop ends here
else
{ //System.out.println(" " + "Not an XML file-------->" +files[i]);
for (int jb = 0; jb < 111999999; jb++){}
}// for loop ends here for files in directory
}//else loop ends for directory files listing
System.out.println("sendfile finished...");
return;
} catch(Exception ex) {ex.printStackTrace();}
}//sendfile ends here
public void displayMenu() throws Exception
System.out.println(" Send File");
SendFile();
return;
And here is the server code...
import java.net.*;
import java.io.*;
import java.util.*;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.text.Format;
import java.lang.Object;
import java.lang.*;
import javax.crypto.*;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
import java.security.spec.AlgorithmParameterSpec;
import java.security.spec.KeySpec;
public class FTPServer
{ public static void main(String args[]) throws Exception
{ ServerSocket soc=new ServerSocket(5217);
System.out.println("FTP Server Started on Port Number 5217");
while(true)
System.out.println("Waiting for Connection ...");
transferfile t=new transferfile(soc.accept());
class transferfile extends Thread
Socket ClientSoc;
DataInputStream din;
DataOutputStream dout;
transferfile(Socket soc)
{ try
{ ClientSoc=soc;
din=new DataInputStream(ClientSoc.getInputStream());
dout=new DataOutputStream(ClientSoc.getOutputStream());
System.out.println("FTP Client Connected ...");
System.out.println("External IP of Client ..." + ClientSoc.getInetAddress());
//System.out.println("FTP Client Connected ..." + ClientSoc.getRemoteSocketAddress());
start();
catch(Exception ex)
//encrypto routine starts
class DesEncrypter {
Cipher ecipher;
Cipher dcipher;
// 8-byte Salt
byte[] salt = {
(byte)0xA9, (byte)0x9B, (byte)0xC8, (byte)0x32,
(byte)0x56, (byte)0x35, (byte)0xE3, (byte)0x03 };
// Iteration count
int iterationCount = 19;
DesEncrypter(String passPhrase) {
try {
// Create the key
KeySpec keySpec = new PBEKeySpec(passPhrase.toCharArray(), salt, iterationCount);
SecretKey key = SecretKeyFactory.getInstance(
"PBEWithMD5AndDES").generateSecret(keySpec);
ecipher = Cipher.getInstance(key.getAlgorithm());
dcipher = Cipher.getInstance(key.getAlgorithm());
// Prepare the parameter to the ciphers
AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount);
// Create the ciphers
ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec);
} catch (java.security.InvalidAlgorithmParameterException e) {
} catch (java.security.spec.InvalidKeySpecException e) {
} catch (javax.crypto.NoSuchPaddingException e) {
} catch (java.security.NoSuchAlgorithmException e) {
} catch (java.security.InvalidKeyException e) {
// Buffer used to transport the bytes from one stream to another
byte[] buf = new byte[1024];
public void encrypt(InputStream in, OutputStream out) {
try {
// Bytes written to out will be encrypted
out = new CipherOutputStream(out, ecipher);
// Read in the cleartext bytes and write to out to encrypt
int numRead = 0;
while ((numRead = in.read(buf)) >= 0) {
out.write(buf, 0, numRead);
out.close();
} catch (java.io.IOException e) {
public void decrypt(InputStream in, OutputStream out) {
try {
// Bytes read from in will be decrypted
in = new CipherInputStream(in, dcipher);
// Read in the decrypted bytes and write the cleartext to out
int numRead = 0;
while ((numRead = in.read(buf)) >= 0) {
out.write(buf, 0, numRead);
//added later on
in.close();
out.close();
} catch (java.io.IOException e) {
} //encryptor routine ends
//not implemented right now as we arent using the ftp server to download stuff...can be activated later on if we want
void SendFile() throws Exception
String filename=din.readUTF();
File f=new File(filename);
if(!f.exists())
dout.writeUTF("File Not Found");
return;
else
{ dout.writeUTF("READY");
FileInputStream fin=new FileInputStream(f);
int ch;
do
ch=fin.read();
dout.writeUTF(String.valueOf(ch));
while(ch!=-1);
fin.close();
dout.writeUTF("File Received Successfully");
String Compare(String filename) throws Exception
///dout.writeUTF("entering compare");
String dateTempString=new String();
Date dateValue=new Date();
SimpleDateFormat formatter = new SimpleDateFormat ("hhmmss");
dateTempString = formatter.format(dateValue);
File dir1 = new File("C:\\FTPnew");
boolean success2 = dir1.mkdir();
if (!success2) {
// Directory creation failed /Already Exists
File dir = new File("C:\\FTPnew\\server");
boolean success = dir.mkdir();
if (!success) {
// Directory creation failed /Already Exists
File ftemp=new File(dir,dateTempString + filename);
File fnewtemp=new File(dir,"new-enc-"+filename);
// Create encrypter/decrypter class
DesEncrypter encrypter = new DesEncrypter("My Pass Phrase!");
FileOutputStream fout=new FileOutputStream(fnewtemp);
int ch;
String temp;
do
{ temp=din.readUTF();
ch=Integer.parseInt(temp);
if(ch!=-1)
fout.write(ch);
}while(ch!=-1);
fout.close();
//dout.writeUTF("written temp en file");
// Decrypt
encrypter.decrypt(new FileInputStream(fnewtemp),
new FileOutputStream(ftemp));
//String Option;
dout.writeUTF("Delete");
System.out.println("File Upload Successfull--Duplicate file with timestamp Created");
boolean success1 = fnewtemp.delete();
return "hello" ;
void ReceiveFile() throws Exception
String ip=din.readUTF();
System.out.println("\tRequest Coming from Internal IP Address : "+ ip);
String filename=din.readUTF();
if(filename.compareTo("File not found")==0)
return;
// Destination directory
File dir11 = new File("C:\\FTPnew");
boolean success22 = dir11.mkdir();
if (!success22) {
// Directory creation failed /Already Exists
File dir = new File("C:\\FTPnew\\server");
boolean success21 = dir.mkdir();
if (!success21) {
// Directory creation failed /Already Exists
File f=new File(dir ,"enc-"+filename);
File fe=new File(dir,filename);
String option;
if(fe.exists())
//dout.writeUTF("File Already Exists");
String compvalue = Compare(filename);
//dout.writeUTF(compvalue);
if(compvalue.compareTo("hello")==0)
//dout.writeUTF("Transfer Completed");
return;
option=din.readUTF();
else
//dout.writeUTF("SendFile");
option="Y";
if(option.compareTo("Y")==0)
// Generate a temporary key.
// Create encrypter/decrypter class
DesEncrypter encrypter = new DesEncrypter("My Pass Phrase!");
FileOutputStream fout=new FileOutputStream(f);
int ch;
String temp;
do
{ temp=din.readUTF();
ch=Integer.parseInt(temp);
if(ch!=-1)
fout.write(ch);
}while(ch!=-1);
fout.close();
// Decrypt
encrypter.decrypt(new FileInputStream(f),
new FileOutputStream(fe));
boolean success2 = f.delete();
dout.writeUTF("Delete");
System.out.println("File Upload Successfull");
else
return;
public void run()
while(true)
try
String Command=din.readUTF();
if(Command.compareTo("SEND")==0)
System.out.println("\tSEND Command Received ...");
ReceiveFile();
continue;
catch(Exception ex)
//System.out.println("\tClient Terminated Abnormally ...........");
continue;Please note that this is not an FTP client and server. FTP is defined by a standard IETF protocol and this isn't it.
Then, move the following lines:
din=new DataInputStream(ClientSoc.getInputStream());
dout=new DataOutputStream(ClientSoc.getOutputStream());
System.out.println("FTP Client Connected ...");
System.out.println("External IP of Client ..." + ClientSoc.getInetAddress());
//System.out.println("FTP Client Connected ..."+ClientSoc.getRemoteSocketAddress());from the constructor into the run() method. i.e. don't do anything with the socket in the thread which handles the accept().
Maybe you are looking for
-
Error while doing Parked document posting in FBV0
Hi, I am getting the below dump error while doing FBV0 - Parked document posting. Can you please help me to fix this.. I have also maintained FBVB. But still i am facing this. Thanks Sunil
-
Digital Signatures on Scanned forms
Is it possible to apply Digital Signatures on Scanned form; i.e can we add a hidden signature field? Thanks, Nith
-
disk utility said I need to repair the HD on my MBP. It said to run disk utility from the install disk. I have Lion installed on my MBP. Lion was a download. So I put the previous version (snow leopard) os disk in the MBP. Then I get a message that
-
Hi. I want to know how to join the AP1522 to a WLC 2106. The Controller and the AP are in the network, but the AP can't be joined to the controller. What is missing?
-
Mysterious unsaved changes in project: Class type definition stored in member VI?
Hi, I'm wondering: why does LabVIEW show changes in a member VIs of a class when I only change the type definition (cluster) of the class in way that the member VI has nothing to do with the changes? Example: Class A{ int a; int b; //new! -> chan