none
VisualBasic2008でFTPにアクセス出来ない。 RRS feed

  • 質問

  • VisualBasic2008を使用してFTPアクセスをする必要があるので
    「FTP アプリケーションの検証」
    http://support.microsoft.com/kb/832679/ja
    をコピペした所、幾つかエラーや警告が出ました。
    とりあえず、「clsFTP.vb」の
    Public Function GetFileListのoutput.Close()のところでエラーになるのは、ファイルリスト所得は今回の作業の目的ではないので関数全体をコメントアウトしました。
    次にm_aBuffer.Clearのところが
    「インスタンスを経由する共有メンバ、定数メンバ、列挙型メンバ、または入れ子にされた型へのアクセスです。正規の式は評価されません。」
    というエラーになるのはm_aBufferを0クリアするのが目的なので、for文でクリアする様にして解決しました。
    それと、Dns.Resolveのところで
    「'Public Shared Function Resolve(hostName As String) As System.Net.IPHostEntry' は旧形式です: 'Resolve is obsoleted for this type, please use GetHostEntry instead. 」
    というエラーがでるので、ResolveをGetHostEntryに書き換えるとエラーはでなくなりました。
    これらの修正を施して上記「FTP アプリケーションの検証」のModule1.vbを動かすとコンソールに
    Specific Error= Cannot connect to remote server
    と表示されるので、トレースした所、ログインに失敗している様です。
    ログイン関数は
    'Log on to the FTP server.
    Public Function Login() As Boolean
     m_objClientSocket = _
      New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
     Dim ep As New IPEndPoint(Dns.GetHostEntry(m_sRemoteHost).AddressList(0), m_iRemotePort)
     Try
      m_objClientSocket.Connect(ep)
     Catch ex As Exception
      MessageString = m_sReply
      Throw New IOException("Cannot connect to remote server")
     End Try
    以下省略
    となっています。
    どうもSocketの結果辺りから既におかしくなっている様です。
    もともとVisual Basic .NET または Visual Basic 2005用のソースなので2008では動かないのでしょうか。
    ご回答の程よろしくお願いします。
    2010年12月17日 12:39

回答