Hi NG
I'm a bit new to programming c# and have a question regarding ftp by the
command prompt. As far as I can see it should be possible to start a process
and pipe command streams into it. But I cant make it work, it always stalls
when I try to read the output:
/// code 1
Process ftpProcess = new Process();
ftpProcess.StartInfo.FileName = "cmd";
ftpProcess.StartInfo.CreateNoWindow = true;
ftpProcess.StartInfo.RedirectStandardInput = true;
ftpProcess.StartInfo.RedirectStandardOutput = true;
ftpProcess.StartInfo.UseShellExecute = false;
ftpProcess.Start();
string output = ftpProcess.StandardOutput.ReadToEnd();
string error = ftpProcess.StandardError.ReadToEnd();
ftpProcess.StandardInput.WriteLine("ftp localhost");
ftpProcess.StandardInput.WriteLine();
output = ftpProcess.StandardOutput.ReadToEnd();
error = ftpProcess.StandardError.ReadToEnd();
ftpProcess.StandardInput.WriteLine("username");
ftpProcess.StandardInput.WriteLine();
//... further ftp action - but I never get this far....
output = ftpProcess.StandardOutput.ReadToEnd();
error = ftpProcess.StandardError.ReadToEnd();
ftpProcess.WaitForExit();
///////////
I also tried:
/// code2
char [] output = new char [1000];
string all = "";
Process ftpProcess = new Process();
ftpProcess.StartInfo.FileName = "cmd";
ftpProcess.StartInfo.CreateNoWindow = true;
ftpProcess.StartInfo.RedirectStandardInput = true;
ftpProcess.StartInfo.RedirectStandardOutput = true;
ftpProcess.StartInfo.UseShellExecute = false;
ftpProcess.Start();
int i = ftpProcess.StandardOutput.Read(output, 0, 1000);
ftpProcess.StandardInput.WriteLine("ftp localhost");
i = ftpProcess.StandardOutput.Read(output, i, 1000-i);
ftpProcess.StandardInput.WriteLine("username");
ftpProcess.StandardInput.WriteLine("password");
ftpProcess.StandardInput.WriteLine("mkdir test");
ftpProcess.StandardInput.WriteLine("ls");
ftpProcess.StandardInput.WriteLine("bye");
all = ftpProcess.StandardOutput.ReadToEnd();
thanx
ps. And yes - I did connect manually by the command prompt so it should
work. 5 3631
The reason it is hanging is that it is probably waiting for input of
some kind (username probably).
However, one has to ask, why not use a third party library to FTP, or
the WinInet functions for FTP through the P/Invoke layer? It would be a
much cleaner solution and give you much more control over the process.
Hope this helps.
--
- Nicholas Paldino [.NET/C# MVP]
- nick(dot)paldino=at=exisconsulting<dot>com
"ask" <a@creepREM.dk> wrote in message
news:3f*********************@news.dk.uu.net... Hi NG
I'm a bit new to programming c# and have a question regarding ftp by the command prompt. As far as I can see it should be possible to start a
process and pipe command streams into it. But I cant make it work, it always
stalls when I try to read the output:
/// code 1 Process ftpProcess = new Process();
ftpProcess.StartInfo.FileName = "cmd"; ftpProcess.StartInfo.CreateNoWindow = true; ftpProcess.StartInfo.RedirectStandardInput = true; ftpProcess.StartInfo.RedirectStandardOutput = true; ftpProcess.StartInfo.UseShellExecute = false;
ftpProcess.Start();
string output = ftpProcess.StandardOutput.ReadToEnd(); string error = ftpProcess.StandardError.ReadToEnd();
ftpProcess.StandardInput.WriteLine("ftp localhost"); ftpProcess.StandardInput.WriteLine();
output = ftpProcess.StandardOutput.ReadToEnd(); error = ftpProcess.StandardError.ReadToEnd();
ftpProcess.StandardInput.WriteLine("username"); ftpProcess.StandardInput.WriteLine();
//... further ftp action - but I never get this far....
output = ftpProcess.StandardOutput.ReadToEnd(); error = ftpProcess.StandardError.ReadToEnd();
ftpProcess.WaitForExit(); ///////////
I also tried:
/// code2 char [] output = new char [1000]; string all = "";
Process ftpProcess = new Process(); ftpProcess.StartInfo.FileName = "cmd"; ftpProcess.StartInfo.CreateNoWindow = true; ftpProcess.StartInfo.RedirectStandardInput = true; ftpProcess.StartInfo.RedirectStandardOutput = true; ftpProcess.StartInfo.UseShellExecute = false; ftpProcess.Start(); int i = ftpProcess.StandardOutput.Read(output, 0, 1000); ftpProcess.StandardInput.WriteLine("ftp localhost"); i = ftpProcess.StandardOutput.Read(output, i, 1000-i); ftpProcess.StandardInput.WriteLine("username"); ftpProcess.StandardInput.WriteLine("password"); ftpProcess.StandardInput.WriteLine("mkdir test"); ftpProcess.StandardInput.WriteLine("ls"); ftpProcess.StandardInput.WriteLine("bye"); all = ftpProcess.StandardOutput.ReadToEnd();
thanx
ps. And yes - I did connect manually by the command prompt so it should work.
Hi,
I've tried this with the FTP command myself using VBScripting, but never got
it to work, so I don't think it's C# problem, but might be something with
the FTP tool. What I ended up doing was to write a script that generated an
FTP script, and then used the -s option of the ftp tools to read that script
instead.
Arild
"ask" <a@creepREM.dk> wrote in message
news:3f*********************@news.dk.uu.net... Hi NG
I'm a bit new to programming c# and have a question regarding ftp by the command prompt. As far as I can see it should be possible to start a
process and pipe command streams into it. But I cant make it work, it always
stalls when I try to read the output:
/// code 1 Process ftpProcess = new Process();
ftpProcess.StartInfo.FileName = "cmd"; ftpProcess.StartInfo.CreateNoWindow = true; ftpProcess.StartInfo.RedirectStandardInput = true; ftpProcess.StartInfo.RedirectStandardOutput = true; ftpProcess.StartInfo.UseShellExecute = false;
ftpProcess.Start();
string output = ftpProcess.StandardOutput.ReadToEnd(); string error = ftpProcess.StandardError.ReadToEnd();
ftpProcess.StandardInput.WriteLine("ftp localhost"); ftpProcess.StandardInput.WriteLine();
output = ftpProcess.StandardOutput.ReadToEnd(); error = ftpProcess.StandardError.ReadToEnd();
ftpProcess.StandardInput.WriteLine("username"); ftpProcess.StandardInput.WriteLine();
//... further ftp action - but I never get this far....
output = ftpProcess.StandardOutput.ReadToEnd(); error = ftpProcess.StandardError.ReadToEnd();
ftpProcess.WaitForExit(); ///////////
I also tried:
/// code2 char [] output = new char [1000]; string all = "";
Process ftpProcess = new Process(); ftpProcess.StartInfo.FileName = "cmd"; ftpProcess.StartInfo.CreateNoWindow = true; ftpProcess.StartInfo.RedirectStandardInput = true; ftpProcess.StartInfo.RedirectStandardOutput = true; ftpProcess.StartInfo.UseShellExecute = false; ftpProcess.Start(); int i = ftpProcess.StandardOutput.Read(output, 0, 1000); ftpProcess.StandardInput.WriteLine("ftp localhost"); i = ftpProcess.StandardOutput.Read(output, i, 1000-i); ftpProcess.StandardInput.WriteLine("username"); ftpProcess.StandardInput.WriteLine("password"); ftpProcess.StandardInput.WriteLine("mkdir test"); ftpProcess.StandardInput.WriteLine("ls"); ftpProcess.StandardInput.WriteLine("bye"); all = ftpProcess.StandardOutput.ReadToEnd();
thanx
ps. And yes - I did connect manually by the command prompt so it should work.
Hi,
I've tried this with the FTP command myself using VBScripting, but never got
it to work, so I don't think it's C# problem, but might be something with
the FTP tool. What I ended up doing was to write a script that generated an
FTP script, and then used the -s option of the ftp tools to read that script
instead.
Arild
"ask" <a@creepREM.dk> wrote in message
news:3f*********************@news.dk.uu.net... Hi NG
I'm a bit new to programming c# and have a question regarding ftp by the command prompt. As far as I can see it should be possible to start a
process and pipe command streams into it. But I cant make it work, it always
stalls when I try to read the output:
/// code 1 Process ftpProcess = new Process();
ftpProcess.StartInfo.FileName = "cmd"; ftpProcess.StartInfo.CreateNoWindow = true; ftpProcess.StartInfo.RedirectStandardInput = true; ftpProcess.StartInfo.RedirectStandardOutput = true; ftpProcess.StartInfo.UseShellExecute = false;
ftpProcess.Start();
string output = ftpProcess.StandardOutput.ReadToEnd(); string error = ftpProcess.StandardError.ReadToEnd();
ftpProcess.StandardInput.WriteLine("ftp localhost"); ftpProcess.StandardInput.WriteLine();
output = ftpProcess.StandardOutput.ReadToEnd(); error = ftpProcess.StandardError.ReadToEnd();
ftpProcess.StandardInput.WriteLine("username"); ftpProcess.StandardInput.WriteLine();
//... further ftp action - but I never get this far....
output = ftpProcess.StandardOutput.ReadToEnd(); error = ftpProcess.StandardError.ReadToEnd();
ftpProcess.WaitForExit(); ///////////
I also tried:
/// code2 char [] output = new char [1000]; string all = "";
Process ftpProcess = new Process(); ftpProcess.StartInfo.FileName = "cmd"; ftpProcess.StartInfo.CreateNoWindow = true; ftpProcess.StartInfo.RedirectStandardInput = true; ftpProcess.StartInfo.RedirectStandardOutput = true; ftpProcess.StartInfo.UseShellExecute = false; ftpProcess.Start(); int i = ftpProcess.StandardOutput.Read(output, 0, 1000); ftpProcess.StandardInput.WriteLine("ftp localhost"); i = ftpProcess.StandardOutput.Read(output, i, 1000-i); ftpProcess.StandardInput.WriteLine("username"); ftpProcess.StandardInput.WriteLine("password"); ftpProcess.StandardInput.WriteLine("mkdir test"); ftpProcess.StandardInput.WriteLine("ls"); ftpProcess.StandardInput.WriteLine("bye"); all = ftpProcess.StandardOutput.ReadToEnd();
thanx
ps. And yes - I did connect manually by the command prompt so it should work.
This is a classic you will see if you use Process class incorrectly.
You can read the document about Process class to understand why this
happens.
Always read the document :)
In our next release, you will be able to get the output asynchrously.
Gang Peng
[MS]
"ask" <a@creepREM.dk> wrote in message
news:3f*********************@news.dk.uu.net... Hi NG
I'm a bit new to programming c# and have a question regarding ftp by the command prompt. As far as I can see it should be possible to start a
process and pipe command streams into it. But I cant make it work, it always
stalls when I try to read the output:
/// code 1 Process ftpProcess = new Process();
ftpProcess.StartInfo.FileName = "cmd"; ftpProcess.StartInfo.CreateNoWindow = true; ftpProcess.StartInfo.RedirectStandardInput = true; ftpProcess.StartInfo.RedirectStandardOutput = true; ftpProcess.StartInfo.UseShellExecute = false;
ftpProcess.Start();
string output = ftpProcess.StandardOutput.ReadToEnd(); string error = ftpProcess.StandardError.ReadToEnd();
ftpProcess.StandardInput.WriteLine("ftp localhost"); ftpProcess.StandardInput.WriteLine();
output = ftpProcess.StandardOutput.ReadToEnd(); error = ftpProcess.StandardError.ReadToEnd();
ftpProcess.StandardInput.WriteLine("username"); ftpProcess.StandardInput.WriteLine();
//... further ftp action - but I never get this far....
output = ftpProcess.StandardOutput.ReadToEnd(); error = ftpProcess.StandardError.ReadToEnd();
ftpProcess.WaitForExit(); ///////////
I also tried:
/// code2 char [] output = new char [1000]; string all = "";
Process ftpProcess = new Process(); ftpProcess.StartInfo.FileName = "cmd"; ftpProcess.StartInfo.CreateNoWindow = true; ftpProcess.StartInfo.RedirectStandardInput = true; ftpProcess.StartInfo.RedirectStandardOutput = true; ftpProcess.StartInfo.UseShellExecute = false; ftpProcess.Start(); int i = ftpProcess.StandardOutput.Read(output, 0, 1000); ftpProcess.StandardInput.WriteLine("ftp localhost"); i = ftpProcess.StandardOutput.Read(output, i, 1000-i); ftpProcess.StandardInput.WriteLine("username"); ftpProcess.StandardInput.WriteLine("password"); ftpProcess.StandardInput.WriteLine("mkdir test"); ftpProcess.StandardInput.WriteLine("ls"); ftpProcess.StandardInput.WriteLine("bye"); all = ftpProcess.StandardOutput.ReadToEnd();
thanx
ps. And yes - I did connect manually by the command prompt so it should work.
This is a classic you will see if you use Process class incorrectly.
You can read the document about Process class to understand why this
happens.
Always read the document :)
In our next release, you will be able to get the output asynchrously.
Gang Peng
[MS]
"ask" <a@creepREM.dk> wrote in message
news:3f*********************@news.dk.uu.net... Hi NG
I'm a bit new to programming c# and have a question regarding ftp by the command prompt. As far as I can see it should be possible to start a
process and pipe command streams into it. But I cant make it work, it always
stalls when I try to read the output:
/// code 1 Process ftpProcess = new Process();
ftpProcess.StartInfo.FileName = "cmd"; ftpProcess.StartInfo.CreateNoWindow = true; ftpProcess.StartInfo.RedirectStandardInput = true; ftpProcess.StartInfo.RedirectStandardOutput = true; ftpProcess.StartInfo.UseShellExecute = false;
ftpProcess.Start();
string output = ftpProcess.StandardOutput.ReadToEnd(); string error = ftpProcess.StandardError.ReadToEnd();
ftpProcess.StandardInput.WriteLine("ftp localhost"); ftpProcess.StandardInput.WriteLine();
output = ftpProcess.StandardOutput.ReadToEnd(); error = ftpProcess.StandardError.ReadToEnd();
ftpProcess.StandardInput.WriteLine("username"); ftpProcess.StandardInput.WriteLine();
//... further ftp action - but I never get this far....
output = ftpProcess.StandardOutput.ReadToEnd(); error = ftpProcess.StandardError.ReadToEnd();
ftpProcess.WaitForExit(); ///////////
I also tried:
/// code2 char [] output = new char [1000]; string all = "";
Process ftpProcess = new Process(); ftpProcess.StartInfo.FileName = "cmd"; ftpProcess.StartInfo.CreateNoWindow = true; ftpProcess.StartInfo.RedirectStandardInput = true; ftpProcess.StartInfo.RedirectStandardOutput = true; ftpProcess.StartInfo.UseShellExecute = false; ftpProcess.Start(); int i = ftpProcess.StandardOutput.Read(output, 0, 1000); ftpProcess.StandardInput.WriteLine("ftp localhost"); i = ftpProcess.StandardOutput.Read(output, i, 1000-i); ftpProcess.StandardInput.WriteLine("username"); ftpProcess.StandardInput.WriteLine("password"); ftpProcess.StandardInput.WriteLine("mkdir test"); ftpProcess.StandardInput.WriteLine("ls"); ftpProcess.StandardInput.WriteLine("bye"); all = ftpProcess.StandardOutput.ReadToEnd();
thanx
ps. And yes - I did connect manually by the command prompt so it should work.
This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Michael J. Moore |
last post by:
Is it the listener process, or some other Oracle process. Also, on a UNIX
system, when you do "ps -ef" to see your processes, the PPID points back to
a process named "init". Why does the PPID not...
|
by: mwazir |
last post by:
Hi all,
I have reposted this question from dotnet.general as I have been advised
that this is a more appropriate forum for this question. Apologies for the
repost.
I have a process thats...
|
by: Doug Wyatt |
last post by:
So I'll preface this with the fact that I'm a UNIX developer by training and
have just recently gotten in to C# development on Windows. I'm basically
running in to a problem whereby I suspect...
|
by: A |
last post by:
Hi all,
This is sort of a newbie question. I have a method that creates a process
which in turn installs MSDE. Basically, after I start the process I need to
wait until it is complete and then...
|
by: ca___t |
last post by:
Hi there :
I want to start a consoneApplication using process.start method at web
application server side.I have a question at this.Why the
consoneApplication's process is start but not run...
|
by: Nikolay Petrov |
last post by:
I have a class which starts a process and redirects it's output and input.
My class have a method which starts the process and another which stops it.
How can I check if the process have been...
|
by: Zen |
last post by:
Hi,
My production machine has 2G of memory, when aspnet_wp.exe goes up to about
~1.2G of memory usage, I start get out-of-memory exception. Other processes
don't use as much memory and I added...
|
by: tony.newsgrps |
last post by:
Hi there,
I'm trying to understand the impact of killing a process that owns a
system mutex (used to ensure there is only 1 instance of my program
running)
Here is my code pretty much:
try...
|
by: Susan |
last post by:
I have a process that takes a while to run so I have it running
asynchronously so that the user can continue working. My question is that I
want to killl the process if the user changes the search...
|
by: SeC |
last post by:
Hi.
Is there any way to detect if application is being killed by 'End
Process' via Task Manager ?
|
by: emmanuelkatto |
last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud.
Please let me know.
Thanks!
Emmanuel
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers,...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome a new...
| |