在Visual Basic中确定ftp服务器是联机还是脱机的最佳方法是什么? 我尝试了许多不同的ping ftp服务器的方法,但无论我尝试什么,我都会收到这个错误:
An exception occurred during a Ping request.
这很容易解决吗?还是有比我正在使用的更好的方法?
答案 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)处理异常控制,以确定是否缺少文件夹导致异常。这应该可以正常工作。
--------------- 也请尝试 ----------------------
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
答案 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];
}
这可能有所帮助。