日期:2014-05-18 浏览次数:21245 次
public void DIR()
{
Socket dataSocket = null;
if (dataSocket==null)
dataSocket = createDataSocket();
string message = "";
if (SendComm("LIST") > 0)
{
try
{
while (true)
{
Array.Clear(buffer, 0, buffer.Length);
int bytes = dataSocket.Receive(buffer, buffer.Length, 0);
message += Encoding.Default.GetString(buffer, 0, bytes);
if (bytes < this.buffer.Length)
{
break;
}
}
FTPReturn.FtpCode = 1;
FTPReturn.FtpMessage = "send command [DIR] ok!\r\n";
StatusChange(FTPReturn);
message = message.Replace("\0", "");
FTPReturn.FtpCode = 1;
FTPReturn.FtpMessage = message;
StatusChange(FTPReturn);
string getResult = readMess();
FTPReturn.FtpCode = Int32.Parse(getResult.Substring(0, 3));
FTPReturn.FtpMessage = getResult;
StatusChange(FTPReturn);
}
catch (System.Exception ex)
{
FTPReturn.FtpCode = -1;
FTPReturn.FtpMessage = ex.Message.ToString();
StatusChange(FTPReturn);
}
}
else
{
string getResult = readMess();
FTPReturn.FtpCode = Int32.Parse(getResult.Substring(0, 3));
FTPReturn.FtpMessage = "send command [DIR] lose!\r\n";
StatusChange(FTPReturn);
}
dataSocket.Close();
}
/// <summary>
/// 开启另一个Socket来接受数据
/// </summary>
/// <returns>socket</returns>
private Socket createDataSocket()
{
Socket socket = null;
int socketPort = 0;
string ipData = "";
SetSendMode(FtpSendMode.pasv);//设置被动传输
if (FTPReturn.FtpMessage.ToString().IndexOf("227 ") >= 0)
{
int i1 = FTPReturn.FtpMessage.IndexOf('(');
int i2 = FTPReturn.FtpMessage.IndexOf(')');
ipData = FTPReturn.FtpMessage.Substring(i1 + 1, i2 - 1 - i1);
string[] ipMess = new string[6];
try
{
ipMess = ipData.Split(',');
socketPort = (int.Parse(ipMess[4]) << 8) + int.Parse(ipMess[5]);
FTPReturn.FtpCode = 1;
FTPReturn.FtpMessage = "端口已经获得“" + socketPort + "”\r\n";
StatusChange(FTPReturn);
}
catch (System.Exception ex)
{
FTPReturn.FtpCode = -1;
FTPReturn.FtpMessage = ex.Message.ToString();
StatusChange(FTPReturn);
}
}
try
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(FTPAdd, socketPort);
}
catch (Exception ex)
{
if (socket != null && socket.Connected) s