TcpServerChannel Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Implementiert einen Serverchannel für Remoteaufrufe, der das TCP-Protokoll zum Übertragen von Meldungen verwendet.
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
- Vererbung
-
TcpServerChannel
- Implementiert
Beispiele
Im folgenden Codebeispiel wird die Verwendung eines remotable-Typs veranschaulicht.
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);
}
}
Das folgende Codebeispiel zeigt die Verwendung der TcpServerChannel -Klasse, um einen remotable-Typ verfügbar zu machen.
#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();
}
}
Hinweise
Wichtig
Das Aufrufen von Methoden aus dieser Klasse mit nicht vertrauenswürdigen Daten stellt ein Sicherheitsrisiko dar. Rufen Sie die Methoden aus dieser Klasse nur mit vertrauenswürdigen Daten auf. Weitere Informationen finden Sie unter Überprüfen aller Eingaben.
Kanäle transportieren Nachrichten über Remotinggrenzen hinweg (z. B. Computer oder Anwendungsdomänen). Die TcpServerChannel -Klasse transportiert Nachrichten mithilfe des TCP-Protokolls.
Kanäle werden von der .NET Framework-Remotinginfrastruktur verwendet, um Remoteanrufe zu übertragen. Wenn ein Client ein Remoteobjekt aufruft, wird der Aufruf in eine Nachricht serialisiert, die von einem Clientkanal gesendet und von einem Serverkanal empfangen wird. Es wird dann deserialisiert und verarbeitet. Alle zurückgegebenen Werte werden vom Serverkanal übertragen und vom Clientkanal empfangen.
Um zusätzliche Verarbeitung von Nachrichten auf serverseitiger Seite durchzuführen, können Sie eine Implementierung der Schnittstelle angeben, über die IServerChannelSinkProvider alle von der TcpServerChannel Instanz verarbeiteten Nachrichten übergeben werden.
Die TcpServerChannel -Instanz akzeptiert Nachrichten, die entweder im binär- oder SOAP-Format serialisiert sind.
Ein TcpServerChannel Objekt verfügt über zugeordnete Konfigurationseigenschaften, die zur Laufzeit entweder in einer Konfigurationsdatei (durch Aufrufen der statischen RemotingConfiguration.Configure Methode) oder programmgesteuert (durch Übergeben einer IDictionary Auflistung an den TcpServerChannel Konstruktor) festgelegt werden können. Eine Liste dieser Konfigurationseigenschaften finden Sie unter Konfigurationseigenschaften für Kanal und Formatierer.
Konstruktoren
TcpServerChannel(IDictionary, IServerChannelSinkProvider) |
Initialisiert eine neue Instanz der TcpServerChannel-Klasse mit den angegebenen Channeleigenschaften und der angegebenen Channelsenke. |
TcpServerChannel(IDictionary, IServerChannelSinkProvider, IAuthorizeRemotingConnection) |
Initialisiert eine neue Instanz der TcpServerChannel-Klasse mit den angegebenen Channeleigenschaften, der angegebenen Channelsenke und dem angegebenen Autorisierungsanbieter. |
TcpServerChannel(Int32) |
Initialisiert eine neue Instanz der TcpServerChannel-Klasse, die den angegebenen Anschluss überwacht. |
TcpServerChannel(String, Int32) |
Initialisiert eine neue Instanz der TcpServerChannel-Klasse mit dem angegebenen Namen, die den angegebenen Anschluss überwacht. |
TcpServerChannel(String, Int32, IServerChannelSinkProvider) |
Initialisiert eine neue Instanz der TcpServerChannel-Klasse mit dem angegebenen Namen, die den angegebenen Anschluss überwacht und die angegebene Senke verwendet. |
Eigenschaften
ChannelData |
Ruft channelspezifische Daten ab. |
ChannelName |
Ruft den Namen des aktuellen Channels ab. |
ChannelPriority |
Ruft die Priorität des aktuellen Channels ab. |
IsSecured |
Ruft einen booleschen Wert ab, der angibt, ob der aktuelle Channel sicher ist, oder legt diesen fest. |
Methoden
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetChannelUri() |
Gibt den URI des aktuellen Channels zurück. |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
GetUrlsForUri(String) |
Gibt ein Array sämtlicher URLs für ein Objekt mit dem angegebenen URI zurück, für das die aktuelle TcpChannel-Instanz als Host fungiert. |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
Parse(String, String) |
Extrahiert aus der angegebenen URL den Channel-URI und den URI des bekannten Remoteobjekts. |
StartListening(Object) |
Weist den aktuellen Kanal an, mit dem Lauschvorgang für einen Kanal zu beginnen, nachdem die StopListening(Object)-Methode aufgerufen wurde, um das Lauschen für den Kanal zu beenden. |
StopListening(Object) |
Weist den aktuellen Channel an, die Überwachung von Anforderungen zu beenden. |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |