Ich habe in C# mit TCP-Sockets herumgespielt, und ich habe Probleme mit einem FTP-Server zu kommunizieren, die ich eingerichtet habe. Ich kann mich anfänglich verbinden und die 220-Nachricht erhalten, aber wenn ich den "USER nrcrast" -Befehl sende, bekomme ich nie eine Antwort, und die DataAvailable-Eigenschaft gibt false zurück. Weiß jemand was ich falsch mache? Hier ist mein Code so weit:Implementieren eines FTP-Clients in C# mit TCP
namespace TCPClient
{
public partial class TCPClientForm : Form
{
private TcpClient myClient;
NetworkStream stream;
public TCPClientForm()
{
InitializeComponent();
send();
}
void send()
{
while (true)
{
try
{
myClient = new TcpClient("nrcrast.dyndns.info", 21);
break;
}
catch (SocketException ex)
{
Console.WriteLine(ex.ToString());
}
}
stream = myClient.GetStream();
int sendOffset = 0;
int recOffset=0;
int dataLength;
Byte[] receiveData = new Byte[256];
// wait for a response
dataLength = stream.Read(receiveData, recOffset, receiveData.Length);
String recvdMessage = System.Text.Encoding.ASCII.GetString(receiveData, 0, dataLength);
Console.WriteLine(recvdMessage.ToString());
recOffset+=dataLength;
String message = "USER nrcrast";
Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);
stream.Write(data, 0, data.Length);
sendOffset += data.Length;
// wait for a response
while (!stream.DataAvailable)
{
}
dataLength = stream.Read(receiveData, 0, receiveData.Length);
recvdMessage = System.Text.Encoding.ASCII.GetString(receiveData, 0, dataLength);
Console.WriteLine(recvdMessage.ToString());
}
}
Ich gehe davon aus, dass Sie dies als eine Lernübung tun, und deshalb verwenden Sie nicht die FtpWebRequest (http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.aspx) Klasse, oder? –
... oder [WebClient] (http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx) –
Ja. Ich versuche nur, das Protokoll selbst zu verstehen, damit ich später einen FTP-Client für Windows Phone programmieren kann. (Ich glaube nicht, dass die ftpwebrequest für Windows-Telefon-Codierung verfügbar ist) – nrcrast