vb.net でのプログラミングは初めてです。私は vb の開発と理解において長い道のりを歩んできましたが、修正できないように見える問題が 1 つあります。PCでftpサーバーをホストしており、サーバーに接続してファイルをダウンロードするためのアプリを作成しています。すべてのサンプル コードの問題は、誰もがサーバーがオンラインになると想定していることです。私の PC は 24 時間年中無休で実行されていない可能性があり、ftp サービスも実行されていない可能性があります。最初のケースでは、接続されていることを登録することさえできません。2 番目のケースでは、PC がオンになっているために接続されていると表示されますが、接続しようとしているマシンがアクティブに接続を拒否していることが返されます。デバッガーで一連の例外を生成せずに、プログラムが実際にサーバーに接続されているかどうかを本当に確認する方法はありますか? 私が欲しいのは次のような呼び出しだけです:
Dim ftponline As Boolean = False 'Set default to false
ftponline = checkftp()
If ftponline Then
'continue program
Else
'try a different server
End If
つまり、true または false のブール値を返す checkftp という関数になります。ここに私の情報があります: Visual Studio 2010 Pro の使用 .Net Framework 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
私が何をしても、2番目のサーバーは接続しません。2番目のサーバーで返されたアイテムを表示するメッセージボックスも配置しましたが、サーバーをオフラインにしてプログラムを実行してもメッセージボックスは表示されません. 助けてくれる人はいますか?