SocketPermission::AddPermission Method (NetworkAccess, TransportType, String^, Int32)


Adds a permission to the set of permissions for a transport address.

Namespace:   System.Net
Assembly:  System (in System.dll)

void AddPermission(
	NetworkAccess access,
	TransportType transport,
	String^ hostName,
	int portNumber


Type: System.Net::NetworkAccess

One of the NetworkAccess values.

Type: System.Net::TransportType

One of the TransportType values.

Type: System::String^

The host name for the transport address.

Type: System::Int32

The port number for the transport address.

Exception Condition

hostName is null.

The hostName can be a DNS name, an IP address, or a specified IP subnet, such as 192.168.1.*.

The following example uses the AddPermission method to add connection permissions to the specified host.

SocketPermission^ socketPermission1 = gcnew SocketPermission( PermissionState::Unrestricted );

// Create a 'SocketPermission' Object* for two ip addresses.
SocketPermission^ socketPermission2 = gcnew SocketPermission( PermissionState::None );
SecurityElement^ securityElement1 = socketPermission2->ToXml();
// 'SocketPermission' Object* for 'Connect' permission
SecurityElement^ securityElement2 = gcnew SecurityElement( "ConnectAccess" );
// Format to specify ip address are <ip-address>#<port>#<transport-type>
// First 'SocketPermission' ip-address is '' for 'All' transport types and
// for 'All'ports for the ip-address.
SecurityElement^ securityElement3 = gcnew SecurityElement( "URI","" );
// Second 'SocketPermission' ip-address is '' for 'All' transport types and
// for 'All' ports for the ip-address.
SecurityElement^ securityElement4 = gcnew SecurityElement( "URI","" );
securityElement2->AddChild( securityElement3 );
securityElement2->AddChild( securityElement4 );
securityElement1->AddChild( securityElement2 );

// Obtain a 'SocketPermission' Object* using 'FromXml' method.
socketPermission2->FromXml( securityElement1 );

Console::WriteLine( "\nDisplays the result of FromXml method : \n" );
Console::WriteLine( socketPermission2 );

// Create another 'SocketPermission' Object* with two ip addresses.
// First 'SocketPermission' ip-address is '' for 'All' transport types and for 'All' ports for the ip-address.
SocketPermission^ socketPermission3 =
   gcnew SocketPermission( NetworkAccess::Connect,
      SocketPermission::AllPorts );

// Second 'SocketPermission' ip-address is '' for 'All' transport types and for 'All' ports for the ip-address.
socketPermission3->AddPermission( NetworkAccess::Connect,
   SocketPermission::AllPorts );

Console::WriteLine( "Displays the result of AddPermission method : \n" );
Console::WriteLine( socketPermission3 );

// Find the intersection between two 'SocketPermission' objects.
socketPermission1 = dynamic_cast<SocketPermission^>(socketPermission2->Intersect( socketPermission3 ));

Console::WriteLine( "Displays the result of Intersect method :\n " );
Console::WriteLine( socketPermission1 );

// Demand that the calling method have the requsite socket permission.

.NET Framework
Available since 1.1
Return to top