- 題名: Socketクラスについて
- 日時: 2005/02/02 17:49:00
- ID: 8866
- この記事の返信元:
- (なし)
- この記事への返信:
- [8868] Re[1]: Socketクラスについて2005/02/02 18:06:09
- ツリーを表示
シャノンさん こんにちは。
返信有難うございます。
早速試してみましたが、コネクト時に待ち状態になってしまいエラーをなってしまいます。多分「このセキュリティは信頼する会社から発行・・・」の警告が出ていると思われます。
VB.net初心者の為、クラスの登録などが間違っているのかもしれませんが、何か考えられるこがございましたらご教授お願い致します。
ソースリスト
Module Module1
Sub Main()
System.Net.ServicePointManager.CertificatePolicy = New MyPolicy
'GETリクエストを送信するサーバー名とパス
Dim server As String = "testsv2"
Dim path As String = "/servlet/CsvDownloadServlet?id=login"
Dim reqMsg As String = _
"GET " + path + " HTTP/1.0" + ControlChars.CrLf + ControlChars.CrLf
'文字列をbyte配列に変換
'Dim enc As System.Text.Encoding = System.Text.Encoding.ASCII
Dim enc As System.Text.Encoding = System.Text.Encoding.Default
Dim reqBytes As Byte() = enc.GetBytes(reqMsg)
'ホスト名からIPアドレスを取得
Dim hostadd As System.Net.IPAddress = _
System.Net.Dns.Resolve(server).AddressList(0)
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)
'接続の確認
If sock.Connected = False Then
Console.WriteLine("接続できませんでした。")
Return
End If
'リクエストメッセージを送信
sock.Send(reqBytes, reqBytes.Length, _
System.Net.Sockets.SocketFlags.None)
'受信する
Dim resMsg As String = ""
Dim resBytes(255) As Byte
While True
Dim resSize As Integer = _
sock.Receive(resBytes, resBytes.Length, _
System.Net.Sockets.SocketFlags.None)
If resSize = 0 Then
Exit While
End If
resMsg += enc.GetString(resBytes, 0, resSize)
End While
'閉じる
sock.Shutdown(System.Net.Sockets.SocketShutdown.Both)
sock.Close()
'受信したメッセージを表示する
Console.WriteLine(resMsg)
End Sub
End Module
Public Class MyPolicy
Implements System.Net.ICertificatePolicy
Public Function CheckValidationResult1(ByVal srvPoint As System.Net.ServicePoint, ByVal certificate As System.Security.Cryptography.X509Certificates.X509Certificate, ByVal request As System.Net.WebRequest, ByVal certificateProblem As Integer) As Boolean Implements System.Net.ICertificatePolicy.CheckValidationResult
If certificateProblem = 0 Or certificateProblem = -2146762487 Or certificateProblem = -2146762495 Or certificateProblem = -2146762481 Then
Return True
Else
Return False
End If
End Function
End Class
分類:[.NET]
Socketクラスを使ってHTTPサーバーにGET要求し、応答を受信する方法のサンプルを拝見しましたが、この方法でHTTPSを使ったGET要求に対し、応答を受信する方法を教えて下さい。