Visual Basic 2010 の Socket クラスを使ってみた

20100903_vb_test.jpg

Visual Basic で FTP クライアント機能を作らないといけない案件があるので、昨日 AIR で作ってみた HTML ソース表示アプリと同じものを Visual Basic 2010 で作ってみた。

参考にしたのは「DOBON.NET プログラミング道:Socketを使ってファイルをダウンロードし表示する」のサンプル。
まあ、ほとんどそのままですけど(笑)
System.Net.Dns.Resolve メソッドは旧式だから使っちゃ駄目!というエラーが出たので、System.Net.Dns.GetHostEntry メソッドに変更したくらい。

Visual Basic 6.0 の Winsock コントロールを使ったコーディングと比べると、随分変わったな。まあ、Perl の Socket 通信コーディングなんかに近いんで、この方がわかりやすいが。

Public Class Form1

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

        Dim server As String = TextBox1.Text
        Dim reqMsg As String = "GET /" + vbCrLf
        Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("utf-8")
        Dim reqBytes As Byte() = enc.GetBytes(reqMsg)

        'ホスト名からIPアドレスを取得
        Dim hostadd As System.Net.IPAddress = System.Net.Dns.GetHostEntry(server).AddressList(0)

        'IPアドレスとポート番号情報を格納(コネクションポイント)
        Dim ephost As New System.Net.IPEndPoint(hostadd, 80)

        'Socketの作成
        Dim sock As New System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp)

        '接続
        sock.Connect(ephost)

        'リクエストメッセージを送信
        sock.Send(reqBytes, reqBytes.Length, System.Net.Sockets.SocketFlags.None)

        '受信する
        Dim resBytes(1023) As Byte
        Dim mem As New System.IO.MemoryStream
        While True
            Dim resSize As Integer = sock.Receive(resBytes, resBytes.Length, System.Net.Sockets.SocketFlags.None)
            If resSize = 0 Then
                Exit While
            End If
            mem.Write(resBytes, 0, resSize)
        End While
        Dim resMsg As String = enc.GetString(mem.GetBuffer(), 0, CInt(mem.Length))
        mem.Close()

        '閉じる
        sock.Shutdown(System.Net.Sockets.SocketShutdown.Both)
        sock.Close()

        '受信したメッセージを表示する
        TextBox2.Text = resMsg

    End Sub

End Class

さて、次は FTP クライアントを作成してみよう。

トラックバック(0)

このブログ記事を参照しているブログ一覧: Visual Basic 2010 の Socket クラスを使ってみた

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/1266

コメントする

このブログ記事について

このページは、shinodaが2010年9月 4日 01:43に書いたブログ記事です。

ひとつ前のブログ記事は「Adobe AIR の Socket クラスを使ってみた」です。

次のブログ記事は「激辛ラーメン10倍つっても、全然もの足り無いんだよなあ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら