我是 vb.net 编程的新手。我在开发和理解 vb 方面取得了长足的进步,但有一个问题我似乎无法解决。我在我的电脑上托管一个 ftp 服务器,我正在制作一个应用程序来连接到我的服务器并下载文件。所有示例代码的问题是每个人都认为服务器将在线。我的电脑可能没有 24/7 运行,我也可能没有运行 ftp 服务。在第一种情况下,它甚至不应该注册它已连接。在第二种情况下,它会说已连接 b/c pc 已打开,但它会返回您尝试连接的机器正在积极拒绝连接。有没有办法真正检查程序是否确实连接到服务器而不在调试器中生成一堆异常?我想要的只是一个电话,例如:
Dim ftponline As Boolean = False 'Set default to false
ftponline = checkftp()
If ftponline Then
'continue program
Else
'try a different server
End If
所以这将是一个名为 checkftp 的函数,它返回一个布尔值 true 或 false。这是我的信息: 使用 Visual Studio 2010 Pro 使用 .Net 框架 4 有人可以帮忙吗?谢谢!我已经尝试过 rebex ftp 包以及 Ultimate FTP 包。这是更新的代码:
Public Function CheckConnection(address As String) As Boolean
Dim logonServer As New System.Net.Sockets.TcpClient()
Try
logonServer.Connect(address, 21)
Catch generatedExceptionName As Exception
MessageBox.Show("Failed to connect to: " & address)
End Try
If logonServer.Connected Then
MessageBox.Show("Connected to: " & address)
Return True
logonServer.Close()
Else
Return False
End If
End Function
Public Sub ConnectFtp()
types.Clear()
models.Clear()
ListBox1.Items.Clear()
ListBox2.Items.Clear()
TextBox2.Clear()
Dim request As New Rebex.Net.Ftp
If CheckConnection(*) Then
Dim tempString As String()
request.Connect(*)
request.Login(*, *)
request.ChangeDirectory("/atc3/HD_Models")
Dim list As Array
list = request.GetNameList()
Dim item As String = ""
For Each item In list
tempString = item.Split(New Char() {" "c})
If types.Contains(tempString(0)) = False Then
types.Add(tempString(0))
End If
If models.Contains(item) = False Then
models.Add(item)
End If
Next
request.Disconnect()
request.Dispose()
ElseIf CheckConnection(*) Then
request.Connect(*)
request.Login(*, *)
request.ChangeDirectory(*)
Dim list2 As Array
list2 = request.GetNameList()
Dim item2 As String = ""
Dim tempString2 As String()
For Each item2 In list2
MessageBox.Show(item2)
tempString2 = item2.Split(New Char() {" "c})
If types.Contains(tempString2(0)) = False Then
types.Add(tempString2(0))
End If
If models.Contains(item2) = False Then
models.Add(item2)
End If
Next
request.Disconnect()
request.Dispose()
End If
End Sub
无论我做什么,第二台服务器都无法连接。我什至放了一个消息框来显示在第二个服务器中返回了哪些项目,但是当我在服务器脱机的情况下运行程序时没有消息框出现。有没有人可以帮忙?