我正在用C#編寫FTP客戶端。我輸入了將文件上傳到FTP服務器和文件上傳的方法。但是,數據傳輸成功後,客戶端將從服務器斷開連接。以下是我的步驟: 1.使用PASV從服務器獲取IP和端口。 2.使用IP和端口創建與服務器的DATA連接。 3.將文件轉換爲字節並通過DATA連接發送。通過COMMAND連接STOR命令破壞與FTP服務器的連接
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
「無響應」和「斷開」是兩個不同的事情。如果您需要我們的幫助,您需要準確。並提供信息,我已經問你了。 –