检查FTP是否在线/离线

时间:2013-07-25 16:23:30

标签: vb.net visual-studio ping ftp-server

在Visual Basic中确定ftp服务器是联机还是脱机的最佳方法是什么? 我尝试了许多不同的ping ftp服务器的方法,但无论我尝试什么,我都会收到这个错误:

An exception occurred during a Ping request.

这很容易解决吗?还是有比我正在使用的更好的方法?

4 个答案:

答案 0 :(得分:3)

使用webrequest,尝试我找到的代码

嗨,这应该可以正常工作:

Imports System.Net

    Dim request = _
    DirectCast(WebRequest.Create _
    ("ftp://ftp.example.com/folder_here/"), FtpWebRequest)

    request.Credentials = _
    New NetworkCredential("user_here", "pass_here")

    request.Method = WebRequestMethods.Ftp.ListDirectory

    Try
        Using response As FtpWebResponse = _
        DirectCast(request.GetResponse(), FtpWebResponse)
            ' Folder exists here
            MsgBox("exists!")
        End Using

    Catch ex As WebException
        Dim response As FtpWebResponse = _
        DirectCast(ex.Response, FtpWebResponse)
        'Does not exist
        If response.StatusCode = _
        FtpStatusCode.ActionNotTakenFileUnavailable Then
            MsgBox("Doesn't exist!")
        End If
    End Try

..我们的想法是我们使用FtpWebRequest类并使用尾部斜杠“/”传递文件夹名称,如果找到该文件夹​​,那么在Try-Catch块内部响应将被正确处理,如果该文件夹不能发现,我们使用statusCode(ActionNotTakenFileUnavailable)处理异常控制,以确定是否缺少文件夹导致异常。这应该可以正常工作。

Sources First answer

--------------- 也请尝试 ----------------------

Public Function CheckIfFtpFileExists(ByVal fileUri As String) As Boolean
   Dim request As FtpWebRequest = WebRequest.Create(fileUri)
   request.Credentials = New NetworkCredential("username", "password")
   request.Method = WebRequestMethods.Ftp.GetFileSize
      Try
       Dim response As FtpWebResponse = request.GetResponse()
       ' THE FILE EXISTS
   Catch ex As WebException
        Dim response As FtpWebResponse = ex.Response
        If FtpStatusCode.ActionNotTakenFileUnavailable = response.StatusCode Then
            ' THE FILE DOES NOT EXIST
            Return False
        End If
    End Try
    Return True
End Function

得到这样的叫法:

If CheckIfFtpFileExists("ftp://ftp.domain.com/filename.txt") Then
    ' Do something
End If

Sources

答案 1 :(得分:1)

你能不能这样做:

    If My.Computer.Network.Ping("IP HERE") Then
        ' Success
    Else
        'fail
    End If

由于

答案 2 :(得分:0)

通常,您会以假定一切都很完美的方式编写代码,然后在连接失败的情况下添加错误处理。

事先验证服务器是否在线并不能保证它在用户会话期间保持这种状态。

答案 3 :(得分:0)

- (void)newBuddyOnline:(NSString *)buddyName {

[onlineBuddies addObject:buddyName];
[self.TableView reloadData];

}

- (void)buddyWentOffline:(NSString *)buddyName {

[onlineBuddies removeObje`
`ct:buddyName];
[self.TableView reloadData];
}

这可能有所帮助。