在 Visual Basic 中确定 ftp 服务器是联机还是脱机的最佳方法是什么?我尝试了许多不同的方法来 ping ftp 服务器,但是无论我尝试什么,我都会收到以下错误:
An exception occurred during a Ping request.
这很容易解决吗?还是有比我使用的更好的方法?
在 Visual Basic 中确定 ftp 服务器是联机还是脱机的最佳方法是什么?我尝试了许多不同的方法来 ping ftp 服务器,但是无论我尝试什么,我都会收到以下错误:
An exception occurred during a Ping request.
这很容易解决吗?还是有比我使用的更好的方法?
使用 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
你能不能这样做:
If My.Computer.Network.Ping("IP HERE") Then
' Success
Else
'fail
End If
谢谢
保罗
通常,您以假定一切都很完美的方式编写代码,然后为连接失败的情况添加错误处理。
预先验证服务器是否在线并不能保证在用户会话期间它会保持这种状态。
- (void)newBuddyOnline:(NSString *)buddyName {
[onlineBuddies addObject:buddyName];
[self.TableView reloadData];
}
- (void)buddyWentOffline:(NSString *)buddyName {
[onlineBuddies removeObje`
`ct:buddyName];
[self.TableView reloadData];
}
这可能会有所帮助。