FTPサーバーへ接続する

.NET (VB)の内容
【注意書き】
●VB.NET を使っているものとします。
●動作環境は、Windows XX を使用しているとします。


.NET でも、FTPサーバーへ接続することが可能です。

この機能を使えば、簡単に、アプリケーション側で
FTP接続で、データのやりとりを行いたい場合などに活用できます。


フォームに次の様なコードを記述します


-----------VB.NETコーディングここから-------------------


1.フォームに、ラベルコントロール
    、テキストボックスコントロール
    、ボタンコントロール
    を配置します。
    下記は、デフォルトのオブジェクトの名前と配置を示しています。

   ┏━━━━━━━━┓┏━━━━━━━━━━━━━━━━┓
   ┃Label1          ┃┃TextBox1                        ┃
   ┗━━━━━━━━┛┗━━━━━━━━━━━━━━━━┛
   ┏━━━━━━━━┓┏━━━━━━━━━━━━━━━━┓
   ┃Label2          ┃┃TextBox2                        ┃
   ┗━━━━━━━━┛┗━━━━━━━━━━━━━━━━┛
   ┏━━━━━━━━┓┏━━━━━━━━━━━━━━━━┓
   ┃Label3          ┃┃TextBox3                        ┃
   ┗━━━━━━━━┛┗━━━━━━━━━━━━━━━━┛
   ┏━━━━━━━━┓┏━━━━━━━━━━━━━━━━┓
   ┃Label4          ┃┃TextBox4                        ┃
   ┗━━━━━━━━┛┗━━━━━━━━━━━━━━━━┛
                   ┏━━━━━━━━┓┏━━━━━━━━┓
                   ┃Button1         ┃┃Button2         ┃
                   ┗━━━━━━━━┛┗━━━━━━━━┛
   ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓
   ┃TextBox5                                            ┃
   ┃※複数行                                            ┃
   ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛


2.テキストボックスコントロール TextBox5は、
    複数行の入力とするため、
    Multiline プロパティを True にします。(複数行)
    ScrollBars プロパティを Vertical にします。
   (スクロールバー)



3.ボタンコントロールの
    Button1 text プロパティに「接続」と記述します。
    Button2 text プロパティに「切断」と記述します。
    ラベルコントロールの
    Label1 text プロパティに「ホスト名」と記述します。
    Label2 text プロパティに「ポート番号」と記述します。
    Label3 text プロパティに「ユーザー」と記述します。
    Label4 text プロパティに「パスワード」と記述します。

  ※説明用のためです。必須ではありません。

   ┏━━━━━━━━┓┏━━━━━━━━━━━━━━━━┓
   ┃ホスト名        ┃┃TextBox1                        ┃
   ┗━━━━━━━━┛┗━━━━━━━━━━━━━━━━┛
   ┏━━━━━━━━┓┏━━━━━━━━━━━━━━━━┓
   ┃ポート番号      ┃┃TextBox2                        ┃
   ┗━━━━━━━━┛┗━━━━━━━━━━━━━━━━┛
   ┏━━━━━━━━┓┏━━━━━━━━━━━━━━━━┓
   ┃ユーザー        ┃┃TextBox3                        ┃
   ┗━━━━━━━━┛┗━━━━━━━━━━━━━━━━┛
   ┏━━━━━━━━┓┏━━━━━━━━━━━━━━━━┓
   ┃パスワード      ┃┃TextBox4                        ┃
   ┗━━━━━━━━┛┗━━━━━━━━━━━━━━━━┛
                   ┏━━━━━━━━┓┏━━━━━━━━┓
                   ┃      接続      ┃┃      切断      ┃
                   ┗━━━━━━━━┛┗━━━━━━━━┛
   ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓
   ┃TextBox5                                            ┃
   ┃※複数行                                            ┃
   ┃                                                    ┃
   ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛


4.ボタンコントロールをダブルクリックして、
    ボタンのクリックイベントの編集を開始して、
    フォームの宣言部に、次のコードを記述します。


    Imports System.Net
    Imports System.Text



    さらに、次のコードを記述します。



    Dim mjsoc As Sockets.Socket
    Dim mjip As IPAddress
    Dim mjipe As IPEndPoint

    Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click


        Dim strSev As String    'ホスト名
        Dim strSevp As String   'ポート

        Dim strUser As String   'ユーザー
        Dim strPass As String   'パスワード


        strSev = TextBox1.Text
        strSevp = TextBox2.Text
        strUser = TextBox3.Text
        strPass = TextBox4.Text


        mjsoc = New Sockets.Socket( _
        Net.Sockets.AddressFamily.InterNetwork, _
        Net.Sockets.SocketType.Stream, _
        Net.Sockets.ProtocolType.Tcp)

        Try
            mjip = Dns.Resolve(strSev).AddressList(0)
            mjipe = New IPEndPoint(mjip, strSevp)

            mjsoc.Connect(mjipe)
            Call SED_DATA(mjsoc, "")
            Call SED_DATA(mjsoc, "USER " & strUser)
            Call SED_DATA(mjsoc, "PASS " & strPass)

        Catch ex As Exception
            TextBox5.AppendText(ex.Message)
        End Try


    End Sub


    Sub SED_DATA(ByVal soc As Sockets.Socket, _
    ByVal strData As String)


        Dim strD As String
        Dim strDB() As String

        Dim intRet As Integer
        Dim bytRetBuf(1024) As Byte
        Dim bytWBuf() As Byte




        If strData <> "" Then
            bytWBuf = Encoding.ASCII.GetBytes( _
            strData & vbCrLf)
            soc.Send(bytWBuf)
            TextBox5.AppendText(strData & vbCrLf)


            Do
                If soc.Available = 0 Then Exit Do
                bytRetBuf.Initialize()
                intRet = soc.Receive(bytRetBuf)
                strD = strD & Encoding.ASCII.GetString( _
                bytRetBuf, 0, intRet)

            Loop
            TextBox5.AppendText(strD)

        End If


    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
        TextBox1.Text = ""
        TextBox2.Text = "21"
        TextBox3.Text = ""
        TextBox4.Text = ""
        TextBox4.PasswordChar = "*"
        TextBox5.Text = ""

    End Sub


    Private Sub Button2_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button2.Click

        Try
            Call SED_DATA(mjsoc, "QUIT ")

            mjsoc.Shutdown(Sockets.SocketShutdown.Both)
            mjsoc.Close()

        Catch ex As Exception
            TextBox5.AppendText(ex.Message)

        End Try

    End Sub



5.ビルドして実行します。

6.ホスト名に、FTPサーバー名を入力します。
    例) localhost.com

7.ポート番号に、ポート番号を入力します。
    例)21

8.ユーザーに、FTPログオンユーザー名を入力します。
    例)loginuser

9.パスワードに、FTPログオンパスワードを入力します。
    例)loginpass

10.フォームに表示された「接続」ボタンを押します。

11.FTPサーバーへの接続動作が行われたことを確認できます。


-----------VB.NETコーディングここまで-------------------

本サンプルでは、ファイルのアップロード、ダウンロードの機能は
実装していません。

パスワードの入力は、"*"で伏せるようにしております。

本サンプルの 例) の入力値は、あくまで例題であり、
接続が行えるものではありませんでの、
接続が可能な サーバー に書き換えてご使用ください。





 

http://anetm.com/dev/d.cgi?SC=DTDTL&o=l3/

Copyright(c)2001-2006 Ai Net Makoto 記事・情報の無断転載を禁止します。