3

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

An exception occurred during a Ping request.

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

4

4 回答 4

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) 处理异常控制以确定缺少文件夹是否导致异常。那应该可以正常工作。

来源 第一个答案

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

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

Get 是这样调用的:

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

来源

于 2013-07-25T18:14:07.883 回答
1

你能不能这样做:

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

谢谢

保罗

于 2013-07-25T16:30:53.963 回答
0

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

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

于 2013-07-25T17:06:42.540 回答
0
- (void)newBuddyOnline:(NSString *)buddyName {

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

}

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

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

这可能会有所帮助。

于 2014-06-30T09:01:43.360 回答