怎么用ping命令来确定这个ftp地址通不通呢  我用Ping ftp://192.168.18.18格式不对。光是ping ip地址的话是可以的。哪位大哥指点下  如何来判断这个ftp地址能不能通?

解决方案 »

  1.   

    telnet 192.168.18.18 21 (ftp默认使用21)如果显示一个空白窗口就说明通了。
      

  2.   

    我要写在程序里面
    Process pro = new Process();
                pro.StartInfo.FileName = @"ftp.exe";
                pro.StartInfo.Arguments = "192.168.18.18";
                pro.StartInfo.UseShellExecute = false;
                pro.StartInfo.RedirectStandardOutput = true;
                pro.Start();
                string output = pro.StandardOutput.ReadToEnd();
                return output;
    这样返回值能得到ping通的结果,但是有个空白命令窗口,解决中
      

  3.   

    Ping命令是走ICMP协议,属于网络层协议,而FTP协议是应用层协议...根本风马牛不相及...能Ping通只表示两台计算机网络连通、均支持TCP/IP、目标机器没有拦截ICMP消息,仅此而已...想知道FTP服务是否可以访问只能用应用层协议如FTP协议或TELNET协议...
      

  4.   

    不需要这种笨办法...用System.Net.FtpWebRequest类操作,去看MSDN...
      

  5.   

    [Quote=引用 5 楼 vrhero 的回复:]
    我就是用的FtpWebRequest。但是在执行的时候Timeout属性不起作用,给一个错误的ftp地址会造成长时间的程序未响应,所以我想在操作之前先做判断能否Ping的通。
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(upUri);
                request.Method = "STOR";
                request.Timeout = 1000;
                request.UsePassive = false;
                request.Credentials = new NetworkCredential("sa", "sa");
                Stream requestStream = null;
                FileStream stream2 = null;
                FtpWebResponse ftpWebResponse = null;
                try
                {
                    requestStream = request.GetRequestStream();
                    stream2 = File.Open(upFile, FileMode.Open);
                    byte[] buffer = new byte[0x400];
                    while (true)
                    {
                        int count = stream2.Read(buffer, 0, buffer.Length);
                        if (count == 0)
                        {
                            break;
                        }
                        requestStream.Write(buffer, 0, count);
                    }
                    if (requestStream != null)
                    {
                        requestStream.Close();
                        requestStream = null;
                    }
                    ftpWebResponse = (FtpWebResponse)request.GetResponse();
                }
      

  6.   

    这个我试过可以实现 但是跳出的ftp命令窗口影响,不知道怎么解决!
      

  7.   

    使用这个 ftp.exe怎么结束 我试了之后很占CPU,机子都停止了public string CheckFtp(string DomainName, String port, String address, string FtpUserName, string FtpUserPwd)
        {
            string UriStr = "ftp://" + DomainName + ":" + port + "//" + address;
            Uri uri = new Uri(UriStr);
            FtpWebRequest ftprequest = (FtpWebRequest)WebRequest.Create(uri);
            ftprequest.Credentials = new NetworkCredential(FtpUserName, FtpUserPwd);
            ftprequest.Method = WebRequestMethods.Ftp.ListDirectory;
            ftprequest.Timeout = 3000;
            FtpWebResponse ftpResponse = (FtpWebResponse)ftprequest.GetResponse();
            ftpResponse.Close();
            return ftpResponse.BannerMessage + " " + ftpResponse.WelcomeMessage;
        }
      

  8.   

    [Quote=引用 9 楼 rczjp 的回复:]
    我也在考虑这样 效率更低了。 ftprequest.Timeout = 3000;
    没作用我郁闷啊
      

  9.   


    再加一句代码
    pro.StartInfo.CreateNoWindow=true;
      

  10.   

    木有用,愿意就是想连接不上ftp就catch出来避免程序无响应,现在绕个大圈子,同事叫我用委托来写,试了下貌似还是不行。
      

  11.   

    telnet 192.168.18.18 21 (ftp默认使用21)如果显示一个空白窗口就说明通了。
      

  12.   

    ftprequest.Timeout = 3000;-----------------------------在你的web.config中设置 ftp传输超时。