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 = resMsgEnd Sub
End Class
さて、次は FTP クライアントを作成してみよう。
電気ウナギ的○○
About Backコメント(0)
電気ウナギ的○○