TcpServerChannel Klas

Definitie

Hiermee wordt een serverkanaal geïmplementeerd voor externe aanroepen die gebruikmaken van het TCP-protocol voor het verzenden van berichten.

public ref class TcpServerChannel : System::Runtime::Remoting::Channels::IChannelReceiver
public ref class TcpServerChannel : System::Runtime::Remoting::Channels::IChannelReceiver, System::Runtime::Remoting::Channels::ISecurableChannel
public class TcpServerChannel : System.Runtime.Remoting.Channels.IChannelReceiver
public class TcpServerChannel : System.Runtime.Remoting.Channels.IChannelReceiver, System.Runtime.Remoting.Channels.ISecurableChannel
type TcpServerChannel = class
    interface IChannelReceiver
    interface IChannel
type TcpServerChannel = class
    interface IChannelReceiver
    interface IChannel
    interface ISecurableChannel
Public Class TcpServerChannel
Implements IChannelReceiver
Public Class TcpServerChannel
Implements IChannelReceiver, ISecurableChannel
Overname
TcpServerChannel
Implementeringen

Voorbeelden

In het volgende codevoorbeeld ziet u het gebruik van een extern type.

using namespace System;
using namespace System::Runtime::Remoting;

public ref class Remotable: public MarshalByRefObject
{
private:
   int callCount;

public:
   Remotable()
      : callCount( 0 )
   {}

   int GetCount()
   {
      callCount++;
      return (callCount);
   }
};
using System;
using System.Runtime.Remoting;

public class Remotable : MarshalByRefObject
{

    private int callCount = 0;

    public int GetCount()
    {
        callCount++;
        return(callCount);
    }
}

In het volgende codevoorbeeld ziet u het gebruik van de TcpServerChannel klasse om een extern type beschikbaar te maken.

#using <System.Runtime.Remoting.dll>
#using <System.dll>
#using <Remotable.dll>

using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Tcp;

int main()
{
   // Set up a server channel.
   TcpServerChannel^ serverChannel = gcnew TcpServerChannel( 9090 );
   ChannelServices::RegisterChannel( serverChannel );

   // Expose an object for remote calls.
   RemotingConfiguration::RegisterWellKnownServiceType( Remotable::typeid, "Remotable.rem", WellKnownObjectMode::Singleton );

   // Show the name and priority of the channel.
   Console::WriteLine( "Channel Name: {0}", serverChannel->ChannelName );
   Console::WriteLine( "Channel Priority: {0}", serverChannel->ChannelPriority );

   // Show the URIs associated with the channel.
   ChannelDataStore^ data = dynamic_cast<ChannelDataStore^>(serverChannel->ChannelData);
   System::Collections::IEnumerator^ myEnum = data->ChannelUris->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      String^ uri = safe_cast<String^>(myEnum->Current);
      Console::WriteLine( uri );
   }

   // Wait for method calls.
   Console::WriteLine( "Listening..." );
   Console::ReadLine();
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;

public class Server
{
    public static void Main()
    {

        // Set up a server channel.
        TcpServerChannel serverChannel = new TcpServerChannel(9090);
        ChannelServices.RegisterChannel(serverChannel);

        // Expose an object for remote calls.
        RemotingConfiguration.RegisterWellKnownServiceType(
            typeof(Remotable), "Remotable.rem", WellKnownObjectMode.Singleton
        );

        // Show the name and priority of the channel.
        Console.WriteLine("Channel Name: {0}", serverChannel.ChannelName);
        Console.WriteLine("Channel Priority: {0}", serverChannel.ChannelPriority);

        // Show the URIs associated with the channel.
        ChannelDataStore data = (ChannelDataStore) serverChannel.ChannelData;
        foreach (string uri in data.ChannelUris)
        {
            Console.WriteLine(uri);
        }

        // Wait for method calls.
        Console.WriteLine("Listening...");
        Console.ReadLine();
    }
}

Opmerkingen

Important

Het aanroepen van methoden uit deze klasse met niet-vertrouwde gegevens is een beveiligingsrisico. Roep de methoden van deze klasse alleen aan met vertrouwde gegevens. Zie Alle invoergegevens validerenvoor meer informatie.

Kanalen transporteren berichten over externe grenzen (bijvoorbeeld computers of toepassingsdomeinen). De TcpServerChannel klasse transporteert berichten met behulp van het TCP-protocol.

Kanalen worden gebruikt door de externe infrastructuur van het .NET Framework voor het transport van externe aanroepen. Wanneer een client een aanroep naar een extern object doet, wordt de aanroep geserialiseerd in een bericht dat wordt verzonden door een clientkanaal en wordt ontvangen door een serverkanaal. Het wordt vervolgens gedeserialiseerd en verwerkt. Geretourneerde waarden worden verzonden door het serverkanaal en ontvangen door het clientkanaal.

Als u extra verwerking van berichten aan de serverzijde wilt uitvoeren, kunt u een implementatie van de IServerChannelSinkProvider interface opgeven waarmee alle berichten die door het TcpServerChannel exemplaar worden verwerkt, worden doorgegeven.

Het TcpServerChannel exemplaar accepteert berichten die in binaire of SOAP-indeling zijn geserialiseerd.

Een TcpServerChannel object heeft configuratie-eigenschappen die tijdens runtime kunnen worden ingesteld in een configuratiebestand (door de statische RemotingConfiguration.Configure methode aan te roepen) of programmatisch (door een IDictionary verzameling door te geven aan de TcpServerChannel constructor). Zie Eigenschappen voor kanaal- en opmaakconfiguratie voor een lijst met deze configuratie-eigenschappen.

Constructors

Name Description
TcpServerChannel(IDictionary, IServerChannelSinkProvider, IAuthorizeRemotingConnection)

Initialiseert een nieuw exemplaar van de TcpServerChannel klasse met de opgegeven kanaaleigenschappen, sink en autorisatieprovider.

TcpServerChannel(IDictionary, IServerChannelSinkProvider)

Initialiseert een nieuw exemplaar van de TcpServerChannel klasse met de opgegeven kanaaleigenschappen en sink.

TcpServerChannel(Int32)

Initialiseert een nieuw exemplaar van de TcpServerChannel klasse die luistert op de opgegeven poort.

TcpServerChannel(String, Int32, IServerChannelSinkProvider)

Initialiseert een nieuw exemplaar van de TcpServerChannel klasse met de opgegeven naam, die luistert op de opgegeven poort en gebruikt de opgegeven sink.

TcpServerChannel(String, Int32)

Initialiseert een nieuw exemplaar van de TcpServerChannel klasse met de opgegeven naam en die luistert op de opgegeven poort.

Eigenschappen

Name Description
ChannelData

Hiermee haalt u kanaalspecifieke gegevens op.

ChannelName

Hiermee haalt u de naam van het huidige kanaal op.

ChannelPriority

Hiermee krijgt u de prioriteit van het huidige kanaal.

IsSecured

Hiermee wordt een Booleaanse waarde opgehaald of ingesteld die aangeeft of het huidige kanaal veilig is.

Methoden

Name Description
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetChannelUri()

Retourneert de URI van het huidige kanaal.

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
GetUrlsForUri(String)

Retourneert een matrix van alle URL's voor een object met de opgegeven URI, gehost op het huidige TcpChannel exemplaar.

MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
Parse(String, String)

Extraheert de kanaal-URI en de externe bekende object-URI uit de opgegeven URL.

StartListening(Object)

Hiermee wordt het huidige kanaal geïnstrueerd om te beginnen met luisteren op een kanaal nadat de StopListening(Object) methode is aangeroepen om te stoppen met luisteren op het kanaal.

StopListening(Object)

Hiermee wordt het huidige kanaal geïnstrueerd om te stoppen met luisteren naar aanvragen.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Van toepassing op