電気ウナギ的○○

About Home

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

shinoda (2010年9月 4日 01:43)

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 クライアントを作成してみよう。

電気ウナギ的○○

電気ウナギ的○○

About Back

コメント(0)

電気ウナギ的○○

電気ウナギ的○○

About Back

トラックバック(0)

トラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/1266

電気ウナギ的○○

About This Site

電気ウナギ的○○
岩国在住。広島で働く超零細IT企業社長のいわゆる社長日記。
何か、酒と食い物のことばかり書いているようで・・・お察しのとおり、肥満体です:-)


2011/06/24
iPhone用サイト公開

Create with jQuery, jQTouch.


CLOSE