Sdílet prostřednictvím


TcpServerChannel Třída

Definice

Implementuje kanál serveru pro vzdálená volání, která k přenosu zpráv používají protokol TCP.

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
Dědičnost
TcpServerChannel
Implementuje

Příklady

Následující příklad kódu ukazuje použití typu vzdálené komunikace.

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);
    }
}

Následující příklad kódu ukazuje použití TcpServerChannel třídy k vystavení typu vzdálené komunikace.

#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();
    }
}

Poznámky

Důležité

Volání metod z této třídy s nedůvěryhodnými daty představuje bezpečnostní riziko. Metody z této třídy volejte pouze s důvěryhodnými daty. Další informace najdete v tématu Ověření všech vstupů.

Kanály přenášejí zprávy přes hranice vzdálené komunikace (například počítače nebo aplikační domény). Třída TcpServerChannel přenáší zprávy pomocí protokolu TCP.

Kanály se používají v infrastruktuře vzdálené komunikace rozhraní .NET Framework k přenosu vzdálených volání. Když klient provede volání vzdáleného objektu, volání se serializuje do zprávy, která je odeslána klientským kanálem a přijata kanálem serveru. Pak se deserializuje a zpracuje. Všechny vrácené hodnoty jsou přenášeny kanálem serveru a přijaty klientským kanálem.

Chcete-li provést další zpracování zpráv na straně serveru, můžete zadat implementaci IServerChannelSinkProvider rozhraní, přes které se předávají všechny zprávy zpracovávané TcpServerChannel instancí.

Instance TcpServerChannel přijímá zprávy serializované v binárním nebo SOAP formátu.

Objekt TcpServerChannel má přidružené vlastnosti konfigurace, které lze nastavit za běhu buď v konfiguračním souboru (vyvoláním statické RemotingConfiguration.Configure metody), nebo programově (předáním IDictionary kolekce konstruktoru TcpServerChannel ). Seznam těchto vlastností konfigurace najdete v tématu Vlastnosti konfigurace kanálu a formátovače.

Konstruktory

TcpServerChannel(IDictionary, IServerChannelSinkProvider)

Inicializuje novou instanci TcpServerChannel třídy se zadanými vlastnostmi kanálu a jímkou.

TcpServerChannel(IDictionary, IServerChannelSinkProvider, IAuthorizeRemotingConnection)

Inicializuje novou instanci třídy pomocí zadaných TcpServerChannel vlastností kanálu, jímky a zprostředkovatele autorizace.

TcpServerChannel(Int32)

Inicializuje novou instanci TcpServerChannel třídy, která naslouchá na zadaném portu.

TcpServerChannel(String, Int32)

Inicializuje novou instanci TcpServerChannel třídy s daným názvem, která naslouchá na zadaném portu.

TcpServerChannel(String, Int32, IServerChannelSinkProvider)

Inicializuje novou instanci TcpServerChannel třídy s daným názvem, která naslouchá na zadaném portu a používá zadanou jímku.

Vlastnosti

ChannelData

Získá data specifická pro kanál.

ChannelName

Získá název aktuálního kanálu.

ChannelPriority

Získá prioritu aktuálního kanálu.

IsSecured

Získá nebo nastaví logickou hodnotu, která označuje, zda je aktuální kanál zabezpečený.

Metody

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetChannelUri()

Vrátí identifikátor URI aktuálního kanálu.

GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
GetUrlsForUri(String)

Vrátí pole všech adres URL pro objekt se zadaným identifikátorem URI hostovaným v aktuální TcpChannel instanci.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
Parse(String, String)

Extrahuje identifikátor URI kanálu a vzdálený dobře známý identifikátor URI objektu ze zadané adresy URL.

StartListening(Object)

Dá aktuálnímu kanálu pokyn, aby po StopListening(Object) zavolání metody začal poslouchat na kanálu, aby přestal naslouchat na kanálu.

StopListening(Object)

Dá aktuálnímu kanálu pokyn, aby přestal naslouchat žádostem.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro