【发布时间】:2017-04-17 17:56:29
【问题描述】:
我正在用 C# 编写 FTP 客户端。我输入了将文件上传到 FTP 服务器的方法,文件上传确实有效。但是,数据传输成功后,客户端与服务器断开连接。以下是我执行的步骤: 1.使用PASV从服务器获取IP和端口。 2. 使用 IP 和端口创建与服务器的 DATA 连接。 3.将文件转换为字节并通过DATA连接发送。 4.通过COMMAND连接发送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功能。文件上传成功后,我没有收到服务器端的响应。如果文件上传失败或者甚至没有使用其他功能也可以正常工作。
-
“无响应”和“断开连接”是两个不同的东西。如果您需要我们的帮助,您需要准确无误。并提供我要求的信息。
-
为什么不使用 C# 中包含的工具连接到 FTP 服务器?检查 FtpWebRequest。
-
我们的作业不允许使用这些库。