SocketPermission-Klasse
Steuert die Rechte zum Herstellen oder Annehmen von Verbindungen über eine Transportadresse.
Namespace: System.Net
Assembly: System (in system.dll)
Syntax
'Declaration
<SerializableAttribute> _
Public NotInheritable Class SocketPermission
Inherits CodeAccessPermission
Implements IUnrestrictedPermission
'Usage
Dim instance As SocketPermission
[SerializableAttribute]
public sealed class SocketPermission : CodeAccessPermission, IUnrestrictedPermission
[SerializableAttribute]
public ref class SocketPermission sealed : public CodeAccessPermission, IUnrestrictedPermission
/** @attribute SerializableAttribute() */
public final class SocketPermission extends CodeAccessPermission implements IUnrestrictedPermission
SerializableAttribute
public final class SocketPermission extends CodeAccessPermission implements IUnrestrictedPermission
Hinweise
SocketPermission-Instanzen steuern Berechtigungen zum Annehmen von Verbindungen oder initiieren Socket-Verbindungen. Eine Socket-Berechtigung kann für einen Hostnamen oder eine IP-Adresse, eine Anschlussnummer sowie ein Transportprotokoll eingerichtet werden.
Hinweis
Verwenden Sie zum Erstellen von Socketberechtigungen keine Hostnamen, da diese Namen in IP-Adressen aufgelöst werden müssen und hierdurch der Stapel blockiert werden kann.
Beispiel
Im folgenden Beispiel wird veranschaulicht, wie mit der SocketPermission-Klasse verschiedene Socketzugriffsbeschränkungen festgelegt, geändert und erzwungen werden.
' 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
// 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();
// Creates a SocketPermission restricting access to and from all URIs.
SocketPermission^ mySocketPermission1 = gcnew 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 = gcnew 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( safe_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( safe_cast<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 = gcnew IPEndPoint( myIpHostEntry->AddressList[ 0 ], 11000 );
Socket^ s = gcnew 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();
// 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.
get_AcceptList();
while (myEnumerator.MoveNext()) {
Console.WriteLine(((EndpointPermission)myEnumerator.
get_Current()).ToString());
}
// Prints the allowable connect URIs to the console.
Console.WriteLine("This union permits connections to :");
myEnumerator = mySocketPermissionUnion.get_ConnectList();
while (myEnumerator.MoveNext()) {
Console.WriteLine(((EndpointPermission)myEnumerator.
get_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.
get_AddressList()[0], 11000);
Socket s = new Socket(myLocalEndPoint.get_Address().
get_AddressFamily(), SocketType.Stream, ProtocolType.Tcp);
try {
s.Connect(myLocalEndPoint);
}
catch (System.Exception e) {
Console.WriteLine("Exception Thrown: " + e.ToString());
}
// Perform all socket operations in here.
s.Close();
Vererbungshierarchie
System.Object
System.Security.CodeAccessPermission
System.Net.SocketPermission
Threadsicherheit
Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Plattformen
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0