ServicePoint クラスとは? わかりやすく解説

ServicePoint クラス

HTTP 接続接続管理提供します

名前空間: System.Net
アセンブリ: System (system.dll 内)
構文構文

解説解説

ServicePoint クラスは、インターネット リソースURI (Uniform Resource Identifier) で渡されホスト情報基づいて、そのリソースへの接続処理しますリソースへの初期接続で、ServicePoint オブジェクトによって保持される情報決定されます。この情報は、以降のそのリソース対すすべての要求によって共有されます。

ServicePoint オブジェクトは、ServicePointManager クラスによって管理され必要に応じて System.Net.ServicePointManager.FindServicePoint メソッドによって作成されます。作成できる ServicePoint オブジェクト最大数は、ServicePointManager.MaxServicePoints プロパティ設定します

ServicePoint オブジェクトは、アイドル時間が MaxIdleTime プロパティ指定され時間超えるまで、インターネット リソースへの接続維持します。ServicePoint は、MaxIdleTime 値を超過したら、別の接続再利用できますMaxIdleTime既定値は、ServicePointManager.MaxServicePointIdleTime プロパティ設定します

ConnectionLeaseTimeout プロパティが -1 以外の値に設定されている場合指定した時間経過すると、アクティブServicePoint 接続は、次の要求の処理後に閉じられます。これは、無制限に開いているアクティブ接続を必要としないアプリケーションに便利です。既定では、アクティブ接続無制限に開いてます。

メモメモ

負荷の高い状況では、一部アプリケーションが ThreadPool 内のフリー スレッド使い果たしシステムパフォーマンス低下することがあります (トランザクション数が多い場合変化する場合など)。この問題解決するための構成変更については、http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenetchapt17.asp を参照してください

使用例使用例

www.contoso.com という URI接続する ServicePoint オブジェクト作成するコード例次に示します

' This example shows how to use the ServicePoint and ServicePointManager
 classes.
' The ServicePointManager class uses the ServicePoint class to manage
 connections
' to a remote host. The networking classes reuse service points for
 all 
' requests to a given URI. In fact, the same ServicePoint object 
' is used to issue requests to Internet resources identified by the
 same
' scheme identifier (for example,  HTTP) and host fragment (for example,
  www.contoso.com).  
' Reusing service points in this way can help improve application  performance.

Imports System
Imports System.Net
Imports System.Threading
Imports System.Text.RegularExpressions

Namespace Mssc.Services.ConnectionManagement
    Module M_TestServicePoint

        Class TestServicePoint
            Private Shared Sub
 ShowProperties(ByVal sp As ServicePoint)

                Console.WriteLine("Done calling FindServicePoint")

                ' Display the ServicePoint Internet resource address.
                Console.WriteLine(("Address = " +
 sp.Address.ToString()))

                ' Display the date and time that the ServicePoint was
 last 
                ' connected to a host.
                Console.WriteLine(("IdleSince = "
 + sp.IdleSince.ToString()))


                ' Display the maximum length of time that the ServicePoint
 instance 
                ' is allowed to maintain an idle connection to an Internet
  
                ' resource before it is recycled for use in another
 connection.
                Console.WriteLine(("MaxIdleTime = "
 + sp.MaxIdleTime.ToString()))

                Console.WriteLine(("ConnectionName = "
 + sp.ConnectionName))

                ' Display the maximum number of connections allowed
 on this 
                ' ServicePoint instance.
                Console.WriteLine(("ConnectionLimit = "
 + sp.ConnectionLimit.ToString()))

                ' Display the number of connections associated with
 this 
                ' ServicePoint instance.
                Console.WriteLine(("CurrentConnections = "
 + sp.CurrentConnections.ToString()))

                If sp.Certificate Is Nothing
 Then
                    Console.WriteLine("Certificate = (null)")
                Else
                    Console.WriteLine(("Certificate = "
 + sp.Certificate.ToString()))
                End If

                If sp.ClientCertificate Is
 Nothing Then
                    Console.WriteLine("ClientCertificate = (null)")
                Else
                    Console.WriteLine(("ClientCertificate = "
 + sp.ClientCertificate.ToString()))
                End If

                Console.WriteLine("ProtocolVersion = "
 + sp.ProtocolVersion.ToString())
                Console.WriteLine(("SupportsPipelining = "
 + sp.SupportsPipelining.ToString()))


                Console.WriteLine("UseNagleAlgorithm = "
 + sp.UseNagleAlgorithm.ToString())
                Console.WriteLine("Expect 100-continue = "
 + sp.Expect100Continue.ToString())
            End Sub 'ShowProperties





            Private Shared Sub
 makeWebRequest(ByVal hashCode As Integer,
 ByVal Uri As String)
                Dim res As HttpWebResponse
 = Nothing

                ' Make sure that the idle time has elapsed, so that
 a new 
                ' ServicePoint instance is created.
                Console.WriteLine("Sleeping for 2 sec.")
                Thread.Sleep(2000)

                Try
                    ' Create a request to the passed URI.
                    Dim req As HttpWebRequest
 = CType(WebRequest.Create(Uri), HttpWebRequest)
                    Console.WriteLine((ControlChars.Lf + "Connecting
 to " + Uri + " ............"))

                    ' Get the response object.
                    res = CType(req.GetResponse(), HttpWebResponse)
                    Console.WriteLine("Connected."
 + ControlChars.Lf)
                    Dim currentServicePoint As
 ServicePoint = req.ServicePoint

                    ' Display new service point properties.
                    Dim currentHashCode As
 Integer = currentServicePoint.GetHashCode()
                    Console.WriteLine(("New service point hashcode:
 " + currentHashCode.ToString()))
                    Console.WriteLine(("New service point max
 idle time: " + currentServicePoint.MaxIdleTime.ToString()))
                    Console.WriteLine(("New service point is idle
 since " + currentServicePoint.IdleSince.ToString()))

                    ' Check that a new ServicePoint instance has been
 created.
                    If hashCode = currentHashCode Then
                        Console.WriteLine("Service point reused.")
                    Else
                        Console.WriteLine("A new service point
 created.")
                    End If
                Catch e As Exception
                    Console.WriteLine(("Source : "
 + e.Source))
                    Console.WriteLine(("Message : "
 + e.Message))
                Finally
                    If Not (res Is
 Nothing) Then
                        res.Close()
                    End If
                End Try
            End Sub 'makeWebRequest


            ' Show the user how to use this program when wrong inputs
 are entered.
            Private Shared Sub
 showUsage()
                Console.WriteLine("Enter the proxy name as follows:")
                Console.WriteLine(ControlChars.Tab + "vb_servicepoint
 proxyName")
            End Sub 'showusage

            ' This is the program entry point. It allows the user to
 enter 
            ' a server name that is used to locate its current homepage.
            Public Shared Sub
 Main(ByVal args() As String)
                Dim proxy As String
 = Nothing
                Dim port As Integer
 = 80

                ' Define a regular expression to parse the user's input.
                ' This is a security check. It allows only
                ' alphanumeric input strings between 2 to 40 characters
 long.
                Dim rex As New
 Regex("^[a-zA-Z]\w{1,39}$")

                If args.Length = 0 Then
                    ' Show how to use this program.
                    showUsage()
                    Return
                End If

                proxy = args(0)
                If (Not (rex.Match(proxy)).Success)
 Then
                    Console.WriteLine("Input string format not
 allowed.")
                    Return
                End If

                ' Create a proxy object.  
                Dim proxyAdd As String
                proxyAdd = "http://" + proxy + ":"
 + port.ToString()


                Dim DefaultProxy As New
 WebProxy(proxyAdd, True)

                ' Set the proxy that all HttpWebRequest instances use.
                GlobalProxySelection.Select = DefaultProxy

                ' Get the base interface for proxy access for the 
                ' WebRequest-based classes.
                Dim Iproxy As IWebProxy = GlobalProxySelection.Select

                ' Set the maximum number of ServicePoint instances to
 maintain.
                ' Note that, if a ServicePoint instance for that host
 already 
                ' exists when your application requests a connection
 to
                ' an Internet resource, the ServicePointManager object
                ' returns this existing ServicePoint. If none exists
 
                ' for that host, it creates a new ServicePoint instance.
                ServicePointManager.MaxServicePoints = 4

                ' Set the maximum idle time of a ServicePoint instance
 to 10 seconds.
                ' After the idle time expires, the ServicePoint object
 is eligible for
                ' garbage collection and cannot be used by the ServicePointManager.
                ServicePointManager.MaxServicePointIdleTime = 10000


                ServicePointManager.UseNagleAlgorithm = True
                ServicePointManager.Expect100Continue = True
                ServicePointManager.CheckCertificateRevocationList = True
                ServicePointManager.DefaultConnectionLimit = _
                    ServicePointManager.DefaultPersistentConnectionLimit
                ' Create the Uri object for the resource you want to
 access.
                Dim MS As New
 Uri("http://msdn.microsoft.com/")

                ' Use the FindServicePoint method to find an existing
 
                ' ServicePoint object or to create a new one.   
                Dim servicePoint As ServicePoint
 = ServicePointManager.FindServicePoint(MS, Iproxy)
                ShowProperties(servicePoint)
                Dim hashCode As Integer
 = servicePoint.GetHashCode()
                Console.WriteLine(("Service point hashcode: "
 + hashCode.ToString()))

                ' Make a request with the same scheme identifier and
 host fragment
                ' used to create the previous ServicePoint object.
                makeWebRequest(hashCode, "http://msdn.microsoft.com/library/")

            End Sub 'Main


        End Class 'TestServicePoint

    End Module
End Namespace

// This example shows how to use the ServicePoint and ServicePointManager
 classes.
// The ServicePointManager class uses the ServicePoint class to manage
 connections
// to a remote host. The networking classes reuse service points for
 all 
// requests to a given URI. In fact, the same ServicePoint object 
// is used to issue requests to Internet resources identified by the
 same
// scheme identifier (for example,  HTTP) and host fragment (for example,
  www.contoso.com).  
// This should improve your application performance. 
// Reusing service points in this way can help improve application performance.
using System;
using System.Net;
using System.Threading;
using System.Text.RegularExpressions;

namespace Mssc.Services.ConnectionManagement
{
    class TestServicePoint
    {
        private static void
 ShowProperties (ServicePoint sp)
        {
            Console.WriteLine ("Done calling FindServicePoint()...");

            // Display the ServicePoint Internet resource address.
            Console.WriteLine ("Address = {0} ", sp.Address.ToString ());

            // Display the date and time that the ServicePoint was last
 
            // connected to a host.
            Console.WriteLine ("IdleSince = " + sp.IdleSince.ToString ());

            // Display the maximum length of time that the ServicePoint
 instance  
            // is allowed to maintain an idle connection to an Internet
  
            // resource before it is recycled for use in another connection.
            Console.WriteLine ("MaxIdleTime = " + sp.MaxIdleTime);

            Console.WriteLine ("ConnectionName = " + sp.ConnectionName);

            // Display the maximum number of connections allowed on
 this 
            // ServicePoint instance.
            Console.WriteLine ("ConnectionLimit = " + sp.ConnectionLimit);

            // Display the number of connections associated with this
 
            // ServicePoint instance.
            Console.WriteLine ("CurrentConnections = " + sp.CurrentConnections);

            if (sp.Certificate == null)
                Console.WriteLine ("Certificate = (null)");
            else
                Console.WriteLine ("Certificate = " + sp.Certificate.ToString
 ());

            if (sp.ClientCertificate == null)
                Console.WriteLine ("ClientCertificate = (null)");
            else
                Console. WriteLine ("ClientCertificate = " + sp.ClientCertificate.ToString
 ());

            Console.WriteLine ("ProtocolVersion = " + sp.ProtocolVersion.ToString
 ());
            Console.WriteLine ("SupportsPipelining = " + sp.SupportsPipelining);

            Console.WriteLine ("UseNagleAlgorithm = " + sp.UseNagleAlgorithm.ToString
 ());
            Console.WriteLine ("Expect 100-continue = " + sp.Expect100Continue.ToString
 ());
        }

        private static void
 makeWebRequest (int hashCode, string Uri)
        {
            HttpWebResponse res = null;

            // Make sure that the idle time has elapsed, so that a new
 
            // ServicePoint instance is created.
            Console.WriteLine ("Sleeping for 2 sec.");
            Thread.Sleep (2000);
            try
            {
                // Create a request to the passed URI.
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create (Uri);

                Console.WriteLine ("\nConnecting to " + Uri + " ............");

                // Get the response object.
                res = (HttpWebResponse)req.GetResponse ();
                Console.WriteLine ("Connected.\n");

                ServicePoint currentServicePoint = req.ServicePoint;

                // Display new service point properties.
                int currentHashCode = currentServicePoint.GetHashCode
 ();

                Console.WriteLine ("New service point hashcode: " + currentHashCode);
                Console.WriteLine ("New service point max idle time: "
 + currentServicePoint.MaxIdleTime);
                Console.WriteLine ("New service point is idle since " +
 currentServicePoint.IdleSince );

                // Check that a new ServicePoint instance has been created.
                if (hashCode == currentHashCode)
                    Console.WriteLine ("Service point reused.");
                else
                    Console.WriteLine ("A new service point
 created.") ;
            }
            catch (Exception e)
            {
                Console.WriteLine ("Source : " + e.Source);
                Console.WriteLine ("Message : " + e.Message);
            }
            finally
            {
                if (res != null)
                    res.Close ();
            }
        }

        // Show the user how to use this program when wrong inputs are
 entered.
        private static void
 showUsage ()
        {
            Console.WriteLine ("Enter the proxy name as follows:");
            Console.WriteLine ("\tcs_servicepoint proxyName");
        }

        public static void
 Main (string[] args)
        {
            int port = 80;

            // Define a regular expression to parse the user's input.
            // This is a security check. It allows only
            // alphanumeric input strings between 2 to 40 characters
 long.
            Regex rex = new Regex (@"^[a-zA-Z]\w{1,39}$");

            if (args.Length < 1)
            {
                showUsage ();
                return;
            }
            string proxy = args[0];

            if ((rex.Match (proxy)).Success != true)
            {
                Console.WriteLine ("Input string format not
 allowed.");
                return;
            }
            string proxyAdd = "http://"
 + proxy + ":" + port;

            // Create a proxy object.  
            WebProxy DefaultProxy = new WebProxy (proxyAdd, true);

            // Set the proxy that all HttpWebRequest instances use.
            GlobalProxySelection.Select = DefaultProxy;

            // Get the base interface for proxy access for the 
            // WebRequest-based classes.
            IWebProxy Iproxy = GlobalProxySelection.Select;

            // Set the maximum number of ServicePoint instances to 
            // maintain. If a ServicePoint instance for that host already
 
            // exists when your application requests a connection to
            // an Internet resource, the ServicePointManager object
            // returns this existing ServicePoint instance. If none
 exists 
            // for that host, it creates a new ServicePoint instance.
            ServicePointManager.MaxServicePoints = 4;

            // Set the maximum idle time of a ServicePoint instance
 to 10 seconds.
            // After the idle time expires, the ServicePoint object
 is eligible for
            // garbage collection and cannot be used by the ServicePointManager
 object.
            ServicePointManager.MaxServicePointIdleTime = 10000;



            ServicePointManager.UseNagleAlgorithm = true;
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.CheckCertificateRevocationList = true;
            ServicePointManager.DefaultConnectionLimit = ServicePointManager.DefaultPersistentConnectionLimit;
            // Create the Uri object for the resource you want to access.
            Uri MS = new Uri ("http://msdn.microsoft.com/");

            // Use the FindServicePoint method to find an existing 
            // ServicePoint object or to create a new one.  
            ServicePoint servicePoint = ServicePointManager.FindServicePoint (MS,
 Iproxy);

            ShowProperties (servicePoint);

            int hashCode = servicePoint.GetHashCode ();

            Console.WriteLine ("Service point hashcode: " + hashCode);

            // Make a request with the same scheme identifier and host
 fragment
            // used to create the previous ServicePoint object.
            makeWebRequest (hashCode, "http://msdn.microsoft.com/library/");
        

            
        }

    }
}
// This example shows how to use the ServicePoint and ServicePointManager
 classes.
// The ServicePointManager class uses the ServicePoint class to manage
 connections
// to a remote host. The networking classes reuse service points for
 all 
// requests to a given URI. In fact, the same ServicePoint object 
// is used to issue requests to Internet resources identified by the
 same
// scheme identifier (for example,  HTTP) and host fragment (for example,
  www.contoso.com).  
// This should improve your application performance. 
// Reusing service points in this way can help improve application performance.
#using <System.dll>

using namespace System;
using namespace System::Net;
using namespace System::Threading;
using namespace System::Text::RegularExpressions;
void ShowProperties( ServicePoint^ sp )
{
   Console::WriteLine( "Done calling FindServicePoint()..." );
   
   // Display the ServicePoint Internet resource address.
   Console::WriteLine( "Address = {0}", sp->Address );
   
   // Display the date and time that the ServicePoint was last 
   // connected to a host.
   Console::WriteLine( "IdleSince = {0}", sp->IdleSince );
   
   // Display the maximum length of time that the ServicePoint instance
  
   // is allowed to maintain an idle connection to an Internet  
   // resource before it is recycled for use in another connection.
   Console::WriteLine( "MaxIdleTime = {0}", sp->MaxIdleTime );
   
   Console::WriteLine( "ConnectionName = {0}", sp->ConnectionName );
   
   // Display the maximum number of connections allowed on this 
   // ServicePoint instance.
   Console::WriteLine( "ConnectionLimit = {0}", sp->ConnectionLimit
 );
   
   // Display the number of connections associated with this 
   // ServicePoint instance.
   Console::WriteLine( "CurrentConnections = {0}", sp->CurrentConnections
 );
   
   if ( sp->Certificate == nullptr )
      Console::WriteLine( "Certificate = (null)" );
   else
      Console::WriteLine( "Certificate = {0}", sp->Certificate );

   if ( sp->ClientCertificate == nullptr )
      Console::WriteLine( "Client Certificate = (null)"
 );
   else
      Console::WriteLine( "Client Certificate = {0}", sp->ClientCertificate
 );

   Console::WriteLine( "ProtocolVersion = {0}", sp->ProtocolVersion->ToString()
 );
   Console::WriteLine( "SupportsPipelining = {0}", sp->SupportsPipelining
 );
   
   Console::WriteLine( "UseNagleAlgorithm = {0} ", sp->UseNagleAlgorithm.ToString()
 );
   Console::WriteLine( "Expect 100-continue = {0}", sp->Expect100Continue.ToString()
 );
   
}


void makeWebRequest( int hashCode, String^
 Uri )
{
   HttpWebResponse^ res = nullptr;
   
   // Make sure that the idle time has elapsed, so that a new 
   // ServicePoint instance is created.
   Console::WriteLine( "Sleeping for 2 sec." );
   Thread::Sleep( 2000 );
   try
   {
      
      // Create a request to the passed URI.
      HttpWebRequest^ req = dynamic_cast<HttpWebRequest^>(WebRequest::Create(
 Uri ));
      Console::WriteLine( "\nConnecting to {0} ............", Uri );
      
      // Get the response object.
      res = dynamic_cast<HttpWebResponse^>(req->GetResponse());
      Console::WriteLine( "Connected.\n" );
      ServicePoint^ currentServicePoint = req->ServicePoint;
      
      // Display new service point properties.
      int currentHashCode = currentServicePoint->GetHashCode();
      Console::WriteLine( "New service point hashcode: {0}", currentHashCode
 );
      Console::WriteLine( "New service point max idle time: {0}", currentServicePoint->MaxIdleTime
 );
      Console::WriteLine( "New service point is idle since {0}", currentServicePoint->IdleSince
 );
      
      // Check that a new ServicePoint instance has been created.
      if ( hashCode == currentHashCode )
            Console::WriteLine( "Service point reused." );
      else
            Console::WriteLine( "A new service point created."
 );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Source : {0}", e->Source );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   finally
   {
      if ( res != nullptr )
            res->Close();
   }

}


// Show the user how to use this program when wrong inputs are entered.
void showUsage()
{
   Console::WriteLine( "Enter the proxy name as follows:" );
   Console::WriteLine( "\tcs_servicepoint proxyName" );
}


int main()
{
   array<String^>^args = Environment::GetCommandLineArgs();
   int port = 80;
   
   // Define a regular expression to parse the user's input.
   // This is a security check. It allows only
   // alphanumeric input strings between 2 to 40 characters long.
   Regex^ rex = gcnew Regex( "^[a-zA-Z]\\w{1,39}$" );
   if ( args->Length < 2 )
   {
      showUsage();
      return  -1;
   }

   String^ proxy = args[ 1 ];
   if ( (rex->Match(proxy))->Success != true
 )
   {
      Console::WriteLine( "Input string format not allowed."
 );
      return  -1;
   }

   String^ proxyAdd = String::Format( "http://{0}:{1}", proxy,
 port );
   
   // Create a proxy object.  
   WebProxy^ DefaultProxy = gcnew WebProxy( proxyAdd,true );
   
   // Set the proxy that all HttpWebRequest instances use.
   GlobalProxySelection::Select = DefaultProxy;
   
   // Get the base interface for proxy access for the 
   // WebRequest-based classes.
   IWebProxy^ Iproxy = GlobalProxySelection::Select;
   
   // Set the maximum number of ServicePoint instances to 
   // maintain. If a ServicePoint instance for that host already 
   // exists when your application requests a connection to
   // an Internet resource, the ServicePointManager object
   // returns this existing ServicePoint instance. If none exists 
   // for that host, it creates a new ServicePoint instance.
   ServicePointManager::MaxServicePoints = 4;
   
   // Set the maximum idle time of a ServicePoint instance to 10 seconds.
   // After the idle time expires, the ServicePoint object is eligible
 for
   // garbage collection and cannot be used by the ServicePointManager.
   ServicePointManager::MaxServicePointIdleTime = 10000;
   
   ServicePointManager::UseNagleAlgorithm = true;
   ServicePointManager::Expect100Continue = true;
   ServicePointManager::CheckCertificateRevocationList = true;
   ServicePointManager::DefaultConnectionLimit = ServicePointManager::DefaultPersistentConnectionLimit;
   
   // Create the Uri object for the resource you want to access.
   Uri^ MS = gcnew Uri( "http://msdn.microsoft.com/" );
   
   // Use the FindServicePoint method to find an existing 
   // ServicePoint object or to create a new one.   
   ServicePoint^ servicePoint = ServicePointManager::FindServicePoint( MS, Iproxy
 );
   ShowProperties( servicePoint );
   int hashCode = servicePoint->GetHashCode();
   Console::WriteLine( "Service point hashcode: {0}", hashCode );
   
   // Make a request with the same scheme identifier and host fragment
   // used to create the previous ServicePoint object.
   makeWebRequest( hashCode, "http://msdn.microsoft.com/library/"
 );
}

package Mssc.Services.ConnectionManagement ; 
// This example shows how to use the ServicePoint and ServicePointManager
 
// classes. The ServicePointManager class uses the ServicePoint class
 to 
// manage connections to a remote host. The networking classes reuse
 service
// points for all requests to a given URI. In fact, the same ServicePoint
 
// object is used to issue requests to Internet resources identified
 by the 
// same scheme identifier (for example,  HTTP) and host fragment (for
 example,
// www.contoso.com).
// This should improve your application performance. 
// Reusing service points in this way can help improve application performance.
import System.*;
import System.Net.*;
import System.Threading.*;
import System.Text.RegularExpressions.*;

class TestServicePoint
{
    private static void
 ShowProperties(ServicePoint sp)
    {
        Console.WriteLine("Done calling FindServicePoint()...");
        // Display the ServicePoint Internet resource address.
        Console.WriteLine("Address = {0} ", sp.get_Address().ToString());

        // Display the date and time that the ServicePoint was last
 
        // connected to a host.
        Console.WriteLine(("IdleSince = " + sp.get_IdleSince().ToString()));

        // Display the maximum length of time that the ServicePoint instance
  
        // is allowed to maintain an idle connection to an Internet
  
        // resource before it is recycled for use in another connection.
        Console.WriteLine(("MaxIdleTime = " + sp.get_MaxIdleTime()));

        Console.WriteLine(("ConnectionName = " + sp.get_ConnectionName()));

        // Display the maximum number of connections allowed on this
 
        // ServicePoint instance.
        Console.WriteLine(("ConnectionLimit = " + sp.get_ConnectionLimit()));

        // Display the number of connections associated with this 
        // ServicePoint instance.
        Console.WriteLine(("CurrentConnections = " 
            + sp.get_CurrentConnections()));

        if (sp.get_Certificate() == null) {
            Console.WriteLine("Certificate = (null)");
        }
        else {
            Console.WriteLine(("Certificate = " 
                + sp.get_Certificate().ToString()));
        }

        if (sp.get_ClientCertificate() == null)
 {
            Console.WriteLine("ClientCertificate = (null)");
        }
        else {
            Console.WriteLine(("ClientCertificate = " 
                + sp.get_ClientCertificate().ToString()));
        }
        Console.WriteLine(("ProtocolVersion = " 
            + sp.get_ProtocolVersion().ToString()));
        Console.WriteLine(("SupportsPipelining = " 
            + sp.get_SupportsPipelining()));

        Console.WriteLine(("UseNagleAlgorithm = " 
            + System.Convert.ToString(sp.get_UseNagleAlgorithm())));
        Console.WriteLine(("Expect 100-continue = " 
            + System.Convert.ToString(sp.get_Expect100Continue())));
    } //ShowProperties

    private static void
 MakeWebRequest(int hashCode, String uri) 
        throws InterruptedException
    {
        HttpWebResponse res = null;

        // Make sure that the idle time has elapsed, so that a new 
        // ServicePoint instance is created.
        Console.WriteLine("Sleeping for 2 sec.");
        Thread.sleep(2000);
        try {
            // Create a request to the passed URI.
            HttpWebRequest req = ((HttpWebRequest)(WebRequest.Create(uri)));
            Console.WriteLine(("\nConnecting to " + uri + " ............"));
            // Get the response object.
            res = ((HttpWebResponse)(req.GetResponse()));
            Console.WriteLine("Connected.\n");
            ServicePoint currentServicePoint = req.get_ServicePoint();

            // Display new service point properties.
            int currentHashCode = currentServicePoint.GetHashCode();

            Console.WriteLine(("New service point hashcode: " 
                + currentHashCode));
            Console.WriteLine(("New service point max idle time: " 
                + currentServicePoint.get_MaxIdleTime()));
            Console.WriteLine(("New service point is idle since " 
                + currentServicePoint.get_IdleSince()));

            // Check that a new ServicePoint instance has been created.
            if (hashCode == currentHashCode) {
                Console.WriteLine("Service point reused.");
            }
            else {
                Console.WriteLine("A new service point created.");
            }
        }
        catch (System.Exception e) {
            Console.WriteLine(("Source : " + e.get_Source()));
            Console.WriteLine(("Message : " + e.get_Message()));
        }
        finally {
            if ( res  != null  ) {
               res.Close();
            }
         }
    } //MakeWebRequest

    // Show the user how to use this program when wrong inputs are entered.
    private static void
 ShowUsage()
    {
        Console.WriteLine("Enter the proxy name as follows:");
        Console.WriteLine("\tcs_servicepoint proxyName");
    } //ShowUsage

    public static void main(String[]
 args) throws InterruptedException
    {
        int port = 80;

        // Define a regular expression to parse the user's input.
        // This is a security check. It allows only
        // alphanumeric input strings between 2 to 40 characters long.
        Regex rex = new Regex("^[a-zA-Z]\\w{1,39}$");
        if (args.length < 1) {
            ShowUsage();
            return;
        }

        String proxy = args[0];

        if (rex.Match(proxy).get_Success() != true)
 {
            Console.WriteLine("Input string format not allowed.");
            return;
        }
        String proxyAdd = "http://" + proxy + ":"
 + port;

        // Create a proxy object.  
        WebProxy defaultProxy = new WebProxy(proxyAdd, true);

        // Set the proxy that all HttpWebRequest instances use.
        GlobalProxySelection.set_Select(defaultProxy);

        // Get the base interface for proxy access for the 
        // WebRequest-based classes.
        IWebProxy iProxy = GlobalProxySelection.get_Select();

        // Set the maximum number of ServicePoint instances to 
        // maintain. If a ServicePoint instance for that host already
 
        // exists when your application requests a connection to
        // an Internet resource, the ServicePointManager object
        // returns this existing ServicePoint instance. If none exists
 
        // for that host, it creates a new ServicePoint instance.
        ServicePointManager.set_MaxServicePoints(4);

        // Set the maximum idle time of a ServicePoint instance to 10
 seconds.
        // After the idle time expires, the ServicePoint object is eligible
 
        // for garbage collection and cannot be used by the ServicePointManager
        // object.
        ServicePointManager.set_MaxServicePointIdleTime(10000);

        ServicePointManager.set_UseNagleAlgorithm(true);
        ServicePointManager.set_Expect100Continue(true);
        ServicePointManager.set_CheckCertificateRevocationList(true);
        ServicePointManager.set_DefaultConnectionLimit(
            ServicePointManager.DefaultPersistentConnectionLimit);

        // Create the Uri object for the resource you want to access.
        Uri ms = new Uri("http://msdn.microsoft.com/");

        // Use the FindServicePoint method to find an existing 
        // ServicePoint object or to create a new one.  
        ServicePoint servicePoint = 
            ServicePointManager.FindServicePoint(ms, iProxy);
        ShowProperties(servicePoint);
        int hashCode = servicePoint.GetHashCode();
        Console.WriteLine(("Service point hashcode: " + hashCode));

        // Make a request with the same scheme identifier and host fragment
        // used to create the previous ServicePoint object.
        MakeWebRequest(hashCode, "http://msdn.microsoft.com/library/");
    } //main 
} //TestServicePoint
継承階層継承階層
System.Object
  System.Net.ServicePoint
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ServicePoint クラス」の関連用語

ServicePoint クラスのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ServicePoint クラスのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS