이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

SocketPermission 클래스

 

게시 날짜: 2016년 11월

전송 주소에서 연결을 허용 하거나 권한을 제어 합니다.

네임스페이스:   System.Net
어셈블리:  System(System.dll에 있음)


[SerializableAttribute]
public sealed class SocketPermission : CodeAccessPermission, 
	IUnrestrictedPermission

이름설명
System_CAPS_pubmethodSocketPermission(NetworkAccess, TransportType, String, Int32)

새 인스턴스를 초기화는 SocketPermission 지정 된 권한이 지정 된 전송 주소에 대 한 클래스입니다.

System_CAPS_pubmethodSocketPermission(PermissionState)

새 인스턴스를 초기화는 SocketPermission 클래스에 대 한 무제한 액세스를 허용 하는 Socket 에 대 한 액세스를 허용 하거나 거부는 Socket합니다.

이름설명
System_CAPS_pubpropertyAcceptList

목록을 가져옵니다 EndpointPermission 이 사용 권한 인스턴스 아래에서 허용 될 수 있는 끝점을 식별 하는 인스턴스입니다.

System_CAPS_pubpropertyConnectList

목록을 가져옵니다 EndpointPermission 이 사용 권한 인스턴스에서 연결할 수 있는 끝점을 식별 하는 인스턴스입니다.

이름설명
System_CAPS_pubmethodAddPermission(NetworkAccess, TransportType, String, Int32)

사용 권한을 전송 주소에 대 한 사용 권한 집합에 추가합니다.

System_CAPS_pubmethodAssert()

스택의 상위 호출자에게 리소스에 액세스할 수 있는 권한이 부여되지 않더라도 호출 코드가 이 메서드를 호출하는 코드를 통해 사용 권한 요구로 보호되는 리소스에 액세스할 수 있음을 선언합니다. Assert를 사용하면 보안 문제가 발생할 수 있습니다.(CodeAccessPermission에서 상속됨)

System_CAPS_pubmethodCopy()

SocketPermission 인스턴스의 복사본을 만듭니다.(CodeAccessPermission.Copy()을(를) 재정의함)

System_CAPS_pubmethodDemand()

호출 스택의 상위 호출자에게 현재 인스턴스로 지정된 권한이 없는 경우 런타임에 SecurityException을 강제 적용합니다.(CodeAccessPermission에서 상속됨)

System_CAPS_pubmethodDeny()

사용되지 않습니다. 호출 스택의 상위 호출자가 이 메서드를 호출하는 코드를 사용하여 현재 인스턴스에 의해 지정된 리소스에 액세스하지 못하게 합니다.(CodeAccessPermission에서 상속됨)

System_CAPS_pubmethodEquals(Object)

지정된 CodeAccessPermission 개체가 현재 CodeAccessPermission과 같은지 여부를 확인합니다.(CodeAccessPermission에서 상속됨)

System_CAPS_pubmethodFromXml(SecurityElement)

다시 구성 하는 SocketPermission 인스턴스를 XML 인코딩으로 합니다.(CodeAccessPermission.FromXml(SecurityElement)을(를) 재정의함)

System_CAPS_pubmethodGetHashCode()

해시 알고리즘과 해시 테이블 같은 데이터 구조에 사용하기 적합한 CodeAccessPermission 개체에 대한 해시 코드를 가져옵니다.(CodeAccessPermission에서 상속됨)

System_CAPS_pubmethodGetType()

현재 인스턴스의 Type을 가져옵니다.(Object에서 상속됨)

System_CAPS_pubmethodIntersect(IPermission)

두 개의 사이의 논리적 교집합을 반환 합니다. SocketPermission 인스턴스.(CodeAccessPermission.Intersect(IPermission)을(를) 재정의함)

System_CAPS_pubmethodIsSubsetOf(IPermission)

현재 사용 권한이 지정된 된 사용 권한의 하위 집합 인지 여부를 확인 합니다.(CodeAccessPermission.IsSubsetOf(IPermission)을(를) 재정의함)

System_CAPS_pubmethodIsUnrestricted()

개체의 전반적인 사용 권한 상태를 확인합니다.

System_CAPS_pubmethodPermitOnly()

호출 스택의 상위 호출자가 이 메서드를 호출하는 코드를 사용하여 현재 인스턴스에 의해 지정된 리소스를 제외한 모든 리소스에 액세스하지 못하게 합니다.(CodeAccessPermission에서 상속됨)

System_CAPS_pubmethodToString()

현재 사용 권한 개체에 대한 문자열 표현을 만들고 반환합니다.(CodeAccessPermission에서 상속됨)

System_CAPS_pubmethodToXml()

XML 인코딩을 만듭니다는 SocketPermission 인스턴스 및 현재 상태입니다.(CodeAccessPermission.ToXml()을(를) 재정의함)

System_CAPS_pubmethodUnion(IPermission)

두 논리 합집합을 반환 합니다. SocketPermission 인스턴스.(CodeAccessPermission.Union(IPermission)을(를) 재정의함)

이름설명
System_CAPS_pubfieldSystem_CAPS_staticAllPorts

모든 포트를 나타내는 상수를 정의 합니다.

SocketPermission 인스턴스 연결을 수락 하거나 시작할 수 있는 권한을 제어 하는 Socket 연결 합니다. A Socket 호스트 이름 또는 IP 주소, 포트 번호 및 전송 프로토콜에 대 한 사용 권한을 설정할 수 있습니다.

System_CAPS_note참고

이러한 이름을 IP 주소로 확인할 수 있고 스택의 차단 하는 대로 호스트 이름을 사용 하 여 소켓 권한을 만들지 마십시오.

다음 예제에 사용 하는 방법을 보여 줍니다는 SocketPermission 설정, 변경 및 다양 한 소켓 액세스 제한을 적용 하는 클래스입니다.


     // 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();

.NET Framework
1.1 이후 사용 가능

이 형식의 모든 public static(Visual Basic의 공유 Visual Basic의 경우) 멤버는 스레드로부터 안전합니다. 인스턴스 멤버는 스레드로부터의 안전이 보장되지 않습니다.

맨 위로 이동
표시: