No one? I've still no succes, looked already at Psychocoder's ftp code example, but i don't doing anything wrong...
a simple LIST command (with a Environment.Newline behind it) would be enough wouldn't it? But i get no response from the ftp server...

here's most of my code in Main:
CODE
static void Main(string[] args)
{
// Data buffer for incoming data.
byte[] bytes = new byte[1024];
// Connect to a remote device.
try {
// Establish the remote endpoint for the socket.
IPHostEntry ipHostInfo = Dns.Resolve("*********.com");
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint remoteEP = new IPEndPoint(ipAddress, 21);
// Create a TCP/IP socket.
Socket sender = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp );
// Connect the socket to the remote endpoint. Catch any errors.
try {
sender.Connect(remoteEP); // verbinding maken met ftp server
Console.WriteLine("Socket connected to {0}",
sender.RemoteEndPoint.ToString());
// get ftp server connection response
int bytesRec = sender.Receive(bytes);
Console.WriteLine("Response ftp: " + Encoding.ASCII.GetString(bytes, 0, bytesRec));
// 220
// send username
byte[] msg = Encoding.ASCII.GetBytes("USER *******\n");
int bytesSent = sender.Send(msg); // username versturen naar ftp server
// get response username (password needed)
bytesRec = sender.Receive(bytes); // ontvangen response (pass needed)
Console.WriteLine("Response ftp: " + Encoding.ASCII.GetString(bytes, 0, bytesRec));
// 331
// send password
msg = Encoding.ASCII.GetBytes("PASS *******\n"); // password versturen naar ftp server
bytesSent = sender.Send(msg);
// get response from ftp server
bytesRec = sender.Receive(bytes); // ontvangen response (login succesvol)
Console.WriteLine("Response ftp: " + Encoding.ASCII.GetString(bytes, 0, bytesRec));
// 230
// check directory currently in
msg = Encoding.ASCII.GetBytes("PWD\n");
bytesSent = sender.Send(msg);
bytesRec = sender.Receive(bytes);
Console.WriteLine("Response ftp: " + Encoding.ASCII.GetString(bytes, 0, bytesRec));
// change directory
msg = Encoding.ASCII.GetBytes("CWD /***********\n");
bytesSent = sender.Send(msg);
bytesRec = sender.Receive(bytes);
Console.WriteLine("Response ftp: " + Encoding.ASCII.GetString(bytes, 0, bytesRec));
// check directory again
msg = Encoding.ASCII.GetBytes("PWD\n");
bytesSent = sender.Send(msg);
bytesRec = sender.Receive(bytes);
Console.WriteLine("Response ftp: " + Encoding.ASCII.GetString(bytes, 0, bytesRec));
// set type to ascii
msg = Encoding.ASCII.GetBytes("TYPE A\n");
bytesSent = sender.Send(msg);
bytesRec = sender.Receive(bytes);
Console.WriteLine("Response ftp: " + Encoding.ASCII.GetString(bytes, 0, bytesRec));
// set to passive mode connection
msg = Encoding.ASCII.GetBytes("PASV\n");
bytesSent = sender.Send(msg);
// receive passive ip + port
bytesRec = sender.Receive(bytes);
String answer = Encoding.ASCII.GetString(bytes, 0, bytesRec);
Console.WriteLine("Response ftp: " + answer);
// set ip and port in variables
answer = answer.Substring(answer.LastIndexOf('(')+1, answer.LastIndexOf(')') - answer.LastIndexOf('(') -1);
Console.WriteLine("answer: " + answer);
String[] splittedString = answer.Split(new char[] { ',' });
String ipaddress = splittedString[0] + "." + splittedString[1] + "." + splittedString[2] + "." + splittedString[3];
int port = (int.Parse(splittedString[4]) << 8) + int.Parse(splittedString[5]);
Console.WriteLine("Address: " + ipaddress + ":" + port.ToString());
// make new endpoint with ip and new port of passive ftp
IPEndPoint ipEndPoint = new IPEndPoint(Dns.GetHostEntry(ipaddress).AddressList[0], port);
// Create a TCP/IP socket.
Socket transfersocket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp );
// connect to passive ftp server with new socket
transfersocket.Connect(ipEndPoint); // verbinding maken met ftp server
// it shows the writeline in the console
Console.WriteLine("Socket connected to {0}",
transfersocket.RemoteEndPoint.ToString());
// BUT (!!) i don't get response here of succesful connection
bytesRec = transfersocket.Receive(bytes); // response ontvangen of de verbinding goed tot stand is gebracht
Console.WriteLine("Response ftp: " + Encoding.ASCII.GetString(bytes, 0, bytesRec));
/*
msg = Encoding.ASCII.GetBytes("LIST -aL\n");
bytesSent = transfersocket.Send(msg);
bytesRec = transfersocket.Receive(bytes);
Console.WriteLine("Response ftp: " + Encoding.ASCII.GetString(bytes, 0, bytesRec));
*/
Console.Read();
// Release the socket.
sender.Shutdown(SocketShutdown.Both);
sender.Close();
} catch (ArgumentNullException ane) {
Console.WriteLine("ArgumentNullException : {0}",ane.ToString());
} catch (SocketException se) {
Console.WriteLine("SocketException : {0}",se.ToString());
} catch (Exception e) {
Console.WriteLine("Unexpected exception : {0}", e.ToString());
}
} catch (Exception e) {
Console.WriteLine( e.ToString());
}
}
passwords, usernames and such are now '*' of course.
Hope someone can help. After the new socketconnection to the passive ftp server, i don't get response from the ftp server.
This post has been edited by nbarten: 31 Jul, 2008 - 04:28 AM