私はC#でFTPクライアントを作成しています。 FTPサーバーにファイルをアップロードする方法を打ちました。ファイルのアップロードは機能します。しかし、データ送信が成功した後、クライアントはサーバーから切断されます。ここにある手順は次のとおりです。 1. PASVを使用してサーバーからIPとポートを取得します。 2. IPとポートを使用してサーバーとのDATA接続を作成します。 3.ファイルをバイトに変換し、DATA接続経由で送信します。私が切断取得なぜ私の質問があるSTORコマンドがFTPサーバーとの接続を破棄します
COMMAND接続を介して 4.送信STOR。
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);
}
はイメージとしてのコードを投稿しないでください。 +あなたのコードは表示されません、メソッドはどのように呼び出されていますか+解説、どのように切断を検出しますか - 正確にはどうなりますか? - ネットワークキャプチャまたは少なくともサーバーログも便利です。 –
アップロードが成功した後、私は実装した他の機能、ディレクトリ変更、NLIST機能、RETR機能を使用しようとします。私は成功したファイルのアップロード後にサーバー側から応答がありません。ファイルのアップロードが失敗したり、使用されていない場合は、他の機能がうまく動作します。 – user7038346
「応答なし」と「切断」は2つの異なることです。私たちの助けが必要な場合は、正確にする必要があります。そして、私があなたに求めた情報を提供してください。 –