SocketPermission クラス

トランスポート アドレス上で接続を確立または受け入れるための権限を制御します。

この型のすべてのメンバの一覧については、SocketPermission メンバ を参照してください。

System.Object
   System.Security.CodeAccessPermission
      System.Net.SocketPermission

<Serializable>
NotInheritable Public Class SocketPermission   Inherits CodeAccessPermission   Implements IUnrestrictedPermission
[C#]
[Serializable]
public sealed class SocketPermission : CodeAccessPermission,   IUnrestrictedPermission
[C++]
[Serializable]
public __gc __sealed class SocketPermission : public   CodeAccessPermission, IUnrestrictedPermission
[JScript]
public
   Serializable
class SocketPermission extends CodeAccessPermission   implements IUnrestrictedPermission

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

SocketPermission インスタンスは、接続を受け入れるか、 Socket 接続を開始するためのアクセス許可を制御します。 Socket アクセス許可は、ホスト名または IP アドレス、ポート番号、およびトランスポート プロトコルに対して設定できます。

使用例

[Visual Basic, C#, C++] SocketPermission クラスを使用して、さまざまなソケット アクセス制限を設定、変更、および適用する方法を次の例に示します。

 
' Creates a SocketPermission restricting access to and from all URIs.
Dim mySocketPermission1 As New SocketPermission(PermissionState.None)

' The socket to which this permission will apply will allow connections from www.contoso.com.
mySocketPermission1.AddPermission(NetworkAccess.Accept, TransportType.Tcp, "www.contoso.com", 11000)

' Creates a SocketPermission which will allow the target Socket to connect with www.southridgevideo.com.
Dim mySocketPermission2 As New SocketPermission(NetworkAccess.Connect, TransportType.Tcp, "www.southridgevideo.com", 11002)

' Creates a SocketPermission from the union of two SocketPermissions.
Dim mySocketPermissionUnion As SocketPermission = CType(mySocketPermission1.Union(mySocketPermission2), SocketPermission)

' Checks to see if the union was successfully created by using the IsSubsetOf method.
If mySocketPermission1.IsSubsetOf(mySocketPermissionUnion) And mySocketPermission2.IsSubsetOf(mySocketPermissionUnion) Then
   Console.WriteLine("This union contains permissions from both mySocketPermission1 and mySocketPermission2")
   
   ' Prints the allowable accept URIs to the console.
   Console.WriteLine("This union accepts connections on :")
   
   Dim myEnumerator As IEnumerator = mySocketPermissionUnion.AcceptList
   While myEnumerator.MoveNext()
      Console.WriteLine(CType(myEnumerator.Current, EndpointPermission).ToString())
   End While
   
   Console.WriteLine("This union establishes connections on : ")
   
   ' Prints the allowable connect URIs to the console.
   Console.WriteLine("This union permits connections to :")
   
   myEnumerator = mySocketPermissionUnion.ConnectList
   While myEnumerator.MoveNext()
      Console.WriteLine(CType(myEnumerator.Current, EndpointPermission).ToString())
   End While
End If 
' Creates a SocketPermission from the intersect of two SocketPermissions.
Dim mySocketPermissionIntersect As SocketPermission = CType(mySocketPermission1.Intersect(mySocketPermissionUnion), SocketPermission)

' mySocketPermissionIntersect should now contain the permissions of mySocketPermission1.
If mySocketPermission1.IsSubsetOf(mySocketPermissionIntersect) Then
   Console.WriteLine("This is expected")
End If
' mySocketPermissionIntersect should not contain the permissios of mySocketPermission2.
If mySocketPermission2.IsSubsetOf(mySocketPermissionIntersect) Then
   Console.WriteLine("This should not print")
End If

' Creates a copy of the intersect SocketPermission.
Dim mySocketPermissionIntersectCopy As SocketPermission = CType(mySocketPermissionIntersect.Copy(), SocketPermission)

If mySocketPermissionIntersectCopy.Equals(mySocketPermissionIntersect) Then
   Console.WriteLine("Copy successfull")
End If
' Converts a SocketPermission to XML format and then immediately converts it back to a SocketPermission.
mySocketPermission1.FromXml(mySocketPermission1.ToXml())


' Checks to see if permission for this socket resource is unrestricted.  If it is, then there is no need to
' demand that permissions be enforced.
If mySocketPermissionUnion.IsUnrestricted() Then

'Do nothing.  There are no restrictions.
Else
   ' Enforces the permissions found in mySocketPermissionUnion on any Socket Resources used below this statement. 
   mySocketPermissionUnion.Demand()
End If

Dim myIpHostEntry As IPHostEntry = Dns.Resolve("www.contoso.com")
Dim myLocalEndPoint As New IPEndPoint(myIpHostEntry.AddressList(0), 11000)

Dim s As New Socket(myLocalEndPoint.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp)
Try
   s.Connect(myLocalEndPoint)
Catch e As Exception
   Console.WriteLine(("Exception Thrown: " + e.ToString()))
End Try

' Perform all socket operations in here.
s.Close()
   End Sub 'MySocketPermission

[C#] 

     // Creates a SocketPermission restricting access to and from all URIs.
     SocketPermission mySocketPermission1 = new SocketPermission(PermissionState.None);

     // The socket to which this permission will apply will allow connections from www.contoso.com.
     mySocketPermission1.AddPermission(NetworkAccess.Accept, TransportType.Tcp, "www.contoso.com", 11000);

     // Creates a SocketPermission which will allow the target Socket to connect with www.southridgevideo.com.
     SocketPermission mySocketPermission2 =
                                new SocketPermission(NetworkAccess.Connect, TransportType.Tcp, "www.southridgevideo.com", 11002);

     // Creates a SocketPermission from the union of two SocketPermissions.
     SocketPermission mySocketPermissionUnion = 
                                (SocketPermission)mySocketPermission1.Union(mySocketPermission2);

     // Checks to see if the union was successfully created by using the IsSubsetOf method.
     if (mySocketPermission1.IsSubsetOf(mySocketPermissionUnion) && 
            mySocketPermission2.IsSubsetOf(mySocketPermissionUnion)){
          Console.WriteLine("This union contains permissions from both mySocketPermission1 and mySocketPermission2"); 

          // Prints the allowable accept URIs to the console.
          Console.WriteLine("This union accepts connections on :");

          IEnumerator myEnumerator = mySocketPermissionUnion.AcceptList;
       while (myEnumerator.MoveNext()) {
               Console.WriteLine(((EndpointPermission)myEnumerator.Current).ToString());
            }      

             // Prints the allowable connect URIs to the console.
          Console.WriteLine("This union permits connections to :");

          myEnumerator = mySocketPermissionUnion.ConnectList;
       while (myEnumerator.MoveNext()) {
               Console.WriteLine(((EndpointPermission)myEnumerator.Current).ToString());
            }      

           }


     // Creates a SocketPermission from the intersect of two SocketPermissions.
     SocketPermission mySocketPermissionIntersect = 
                               (SocketPermission)mySocketPermission1.Intersect(mySocketPermissionUnion);

     // mySocketPermissionIntersect should now contain the permissions of mySocketPermission1.
     if (mySocketPermission1.IsSubsetOf(mySocketPermissionIntersect)){
          Console.WriteLine("This is expected");
     }
    // mySocketPermissionIntersect should not contain the permissios of mySocketPermission2.
     if (mySocketPermission2.IsSubsetOf(mySocketPermissionIntersect)){
          Console.WriteLine("This should not print");
     }



// Creates a copy of the intersect SocketPermission.
     SocketPermission mySocketPermissionIntersectCopy = 
                               (SocketPermission)mySocketPermissionIntersect.Copy();

     if (mySocketPermissionIntersectCopy.Equals(mySocketPermissionIntersect)){
     Console.WriteLine("Copy successfull");
     }


     // Converts a SocketPermission to XML format and then immediately converts it back to a SocketPermission.
     mySocketPermission1.FromXml(mySocketPermission1.ToXml());
     

     // Checks to see if permission for this socket resource is unrestricted.  If it is, then there is no need to
     // demand that permissions be enforced.
     if (mySocketPermissionUnion.IsUnrestricted()){
         
          //Do nothing.  There are no restrictions.

     }
     else{
         // Enforces the permissions found in mySocketPermissionUnion on any Socket Resources used below this statement. 
         mySocketPermissionUnion.Demand();
     }

    IPHostEntry myIpHostEntry = Dns.Resolve("www.contoso.com");
    IPEndPoint myLocalEndPoint = new IPEndPoint(myIpHostEntry.AddressList[0], 11000);

       Socket s = new Socket(myLocalEndPoint.Address.AddressFamily,
                                      SocketType.Stream,
                                         ProtocolType.Tcp);
       try{
            s.Connect(myLocalEndPoint);
       }
       catch (Exception e){
            Console.WriteLine("Exception Thrown: " + e.ToString());
       } 

      // Perform all socket operations in here.
      
      s.Close();

[C++] 

        // Creates a SocketPermission restricting access to and from all URIs.
        SocketPermission *mySocketPermission1 = new SocketPermission(PermissionState::None);

        // The socket to which this permission will apply will allow connections from www.contoso.com.
        mySocketPermission1->AddPermission(NetworkAccess::Accept, TransportType::Tcp, "www.contoso.com", 11000);

        // Creates a SocketPermission which will allow the target Socket to connect with www.southridgevideo.com.
        SocketPermission *mySocketPermission2 =
            new SocketPermission(NetworkAccess::Connect, TransportType::Tcp, "www.southridgevideo.com", 11002);

        // Creates a SocketPermission from the union of two SocketPermissions.
        SocketPermission *mySocketPermissionUnion = 
            __try_cast<SocketPermission *>(mySocketPermission1->Union(mySocketPermission2));

        // Checks to see if the union was successfully created by using the IsSubsetOf method.
        if (mySocketPermission1->IsSubsetOf(mySocketPermissionUnion) && 
            mySocketPermission2->IsSubsetOf(mySocketPermissionUnion)){
                Console::WriteLine("This union contains permissions from both mySocketPermission1 and mySocketPermission2"); 

                // Prints the allowable accept URIs to the console.
                Console::WriteLine("This union accepts connections on :");

                IEnumerator *myEnumerator = mySocketPermissionUnion->AcceptList;
                while (myEnumerator->MoveNext()) {
                    Console::WriteLine(__try_cast<EndpointPermission *>(myEnumerator->Current)->ToString());
                }      

                // Prints the allowable connect URIs to the console.
                Console::WriteLine("This union permits connections to :");

                myEnumerator = mySocketPermissionUnion->ConnectList;
                while (myEnumerator->MoveNext()) {
                    Console::WriteLine(__try_cast<EndpointPermission *>(myEnumerator->Current)->ToString());
                }      

            }


            // Creates a SocketPermission from the intersect of two SocketPermissions.
            SocketPermission *mySocketPermissionIntersect = 
                __try_cast<SocketPermission *>(mySocketPermission1->Intersect(mySocketPermissionUnion));

            // mySocketPermissionIntersect should now contain the permissions of mySocketPermission1.
            if (mySocketPermission1->IsSubsetOf(mySocketPermissionIntersect)){
                Console::WriteLine("This is expected");
            }
            // mySocketPermissionIntersect should not contain the permissios of mySocketPermission2.
            if (mySocketPermission2->IsSubsetOf(mySocketPermissionIntersect)){
                Console::WriteLine("This should not print");
            }



            // Creates a copy of the intersect SocketPermission.
            SocketPermission *mySocketPermissionIntersectCopy = 
                __try_cast<SocketPermission *>(mySocketPermissionIntersect->Copy());

            if (mySocketPermissionIntersectCopy->Equals(mySocketPermissionIntersect)){
                Console::WriteLine("Copy successfull");
            }


            // Converts a SocketPermission to XML format and then immediately converts it back to a SocketPermission.
            mySocketPermission1->FromXml(mySocketPermission1->ToXml());


            // Checks to see if permission for this socket resource is unrestricted.  If it is, then there is no need to
            // demand that permissions be enforced.
            if (mySocketPermissionUnion->IsUnrestricted()){

                //Do nothing.  There are no restrictions.

            }
            else{
                // Enforces the permissions found in mySocketPermissionUnion on any Socket Resources used below this statement. 
                mySocketPermissionUnion->Demand();
            }

            IPHostEntry *myIpHostEntry = Dns::Resolve("www.contoso.com");
            IPEndPoint *myLocalEndPoint = new IPEndPoint(myIpHostEntry->AddressList[0], 11000);

            Socket *s = new Socket(myLocalEndPoint->Address->AddressFamily,
                SocketType::Stream, ProtocolType::Tcp);
            try{
                s->Connect(myLocalEndPoint);
            }
            catch (Exception *e){
                Console::Write("Exception Thrown: ");
                Console::WriteLine(e->ToString());
            } 

            // Perform all socket operations in here.

            s->Close();

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Net

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: System (System.dll 内)

参照

SocketPermission メンバ | System.Net 名前空間