Ich schreibe FTP-Client mit C#. Ich tippte Methoden zum Hochladen von Datei auf FTP-Server und Datei-Upload funktioniert. Nach erfolgreicher Datenübertragung wird der Client jedoch vom Server getrennt. Hier sind die Schritte, die ich tue: 1. Erhalten Sie IP und Port vom Server mit PASV. 2. Erstellen Sie eine Datenverbindung mit dem Server über IP und Port. 3. Konvertieren Sie die Datei in Bytes und senden Sie sie über die DATA-Verbindung. 4. Senden STOR über COMMAND-VerbindungSTOR Befehl zerstört Verbindung mit FTP-Server
Meine Frage ist, warum ich die Verbindung getrennt bekomme.
public void PrepareUpload() // Get IP and Port from server by using PASV.
{
String answer;
String message = "PASV\r\n";
Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);
this.ns.Write(data, 0, data.Length);
answer = Response(this.ns);
this.dataPort = getPort(answer, 4) * 256 + getPort(answer, 5);
}
public void DataConnect(string server) // Create DATA connection with server using IP and port.
{
int port = this.dataPort;
this.dataConnection = new TcpClient();
IPAddress ipAddress = Dns.GetHostEntry(server).AddressList[0];
this.dataConnection.Connect(ipAddress, port);
this.nds = dataConnection.GetStream();
}
public void DataTransfer(string filename) // Convert file to bytes and send through DATA connection.
{
byte[] data = System.IO.File.ReadAllBytes(filename);
this.filename = Path.GetFileName(filename);
nds.Write(data, 0, data.Length);
}
public void Upload() // Send STOR through COMMAND connection
{
String message = "STOR " + this.filename + "\r\n";
Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);
this.ns.Write(data, 0, data.Length);
}
Veröffentlichen Sie Code nicht als Bild. Schreib es als Text + Außerdem zeigt dein Code nicht an, wie heißen die Methoden + Erklären, wie erkennst du die Trennung - Was genau passiert? - Netzwerk-Capture oder zumindest ein Server-Log wäre auch nützlich. –
Nach erfolgreichem Upload versuche ich andere Funktionen zu verwenden, die ich implementiert habe: Verzeichniswechsel, NLIST-Funktion, RETR-Funktion. Ich bekomme keine Antwort von der Serverseite nach dem erfolgreichen Datei-Upload. Wenn der Datei-Upload fehlschlägt oder nicht einmal verwendet wird, funktionieren andere Funktionen gut. – user7038346
"Keine Antwort" und "Trennen" sind zwei verschiedene Dinge. Wenn Sie unsere Hilfe brauchen, müssen Sie genau sein. Und stelle die Informationen bereit, nach denen ich dich gefragt habe. –