Socketクラスを使ってHTTPサーバーにGET要求し、応答を受信する方法を、具体例のみ示します。通常は、「WebRequest、WebResponseクラスを使ってファイルをダウンロードし表示する」のような方法で十分です。説明は一切しませんので、興味のある方のみ参考にしてください。
'GETリクエストを送信するサーバー名とパス Dim server As String = "www.google.co.jp" Dim path As String = "/" 'リクエストメッセージを作成する Dim reqMsg As String = "GET " + path + " HTTP/1.1" + vbCrLf + _ "Host: " + server + vbCrLf + "Connection: Close" + vbCrLf + vbCrLf '文字列をbyte配列に変換 Dim enc As System.Text.Encoding = _ System.Text.Encoding.GetEncoding("shift_jis") Dim reqBytes As Byte() = enc.GetBytes(reqMsg) 'ホスト名からIPアドレスを取得 Dim hostadd As System.Net.IPAddress = _ System.Net.Dns.Resolve(server).AddressList(0) 'または 'System.Net.IPAddress hostadd = _ ' System.Net.Dns.GetHostByName(server).AddressList(0) 'IPEndPointを取得 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() '受信したメッセージを表示する Console.WriteLine(resMsg)
//GETリクエストを送信するサーバー名とパス string server = "www.google.co.jp"; string path = "/"; //リクエストメッセージを作成する string reqMsg = "GET " + path + " HTTP/1.1\r\n" + "Host: " + server + "\r\n" + "Connection: Close\r\n\r\n"; //文字列をbyte配列に変換 System.Text.Encoding enc = System.Text.Encoding.GetEncoding("shift_jis"); byte [] reqBytes = enc.GetBytes(reqMsg); //ホスト名からIPアドレスを取得 System.Net.IPAddress hostadd = System.Net.Dns.Resolve(server).AddressList[0]; //または //System.Net.IPAddress hostadd = // System.Net.Dns.GetHostByName(server).AddressList[0]; //IPEndPointを取得 System.Net.IPEndPoint ephost = new System.Net.IPEndPoint(hostadd, 80); //Socketの作成 System.Net.Sockets.Socket sock = 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); //受信する byte [] resBytes = new byte[1024]; System.IO.MemoryStream mem = new System.IO.MemoryStream(); while (true) { int resSize = sock.Receive(resBytes, resBytes.Length, System.Net.Sockets.SocketFlags.None); if (resSize == 0) break; mem.Write(resBytes, 0, resSize); } string resMsg = enc.GetString(mem.GetBuffer(), 0, (int) mem.Length); mem.Close(); //閉じる sock.Shutdown(System.Net.Sockets.SocketShutdown.Both); sock.Close(); //受信したメッセージを表示する Console.WriteLine(resMsg);