TcpServerChannel Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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) |