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 Serverkanal für Remoteanrufe, die das TCP-Protokoll zum Übertragen von Nachrichten verwenden.
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
Das folgende Codebeispiel zeigt die Verwendung eines remotable-Typs.
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
Von Bedeutung
Das Aufrufen von Methoden aus dieser Klasse mit nicht vertrauenswürdigen Daten ist ein Sicherheitsrisiko. 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 zum Transport von Remoteanrufen verwendet. Wenn ein Client einen Aufruf an ein Remoteobjekt sendet, 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 eine zusätzliche Verarbeitung von Nachrichten auf serverseitiger Seite durchzuführen, können Sie eine Implementierung der IServerChannelSinkProvider Schnittstelle angeben, über die alle von der TcpServerChannel Instanz verarbeiteten Nachrichten übergeben werden.
Die TcpServerChannel Instanz akzeptiert nachrichten serialisiert im binär- oder SOAP-Format.
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.
Konstruktoren
| Name | Beschreibung |
|---|---|
| TcpServerChannel(IDictionary, IServerChannelSinkProvider, IAuthorizeRemotingConnection) |
Initialisiert eine neue Instanz der TcpServerChannel Klasse mit den angegebenen Kanaleigenschaften, Senken und Autorisierungsanbietern. |
| TcpServerChannel(IDictionary, IServerChannelSinkProvider) |
Initialisiert eine neue Instanz der TcpServerChannel Klasse mit den angegebenen Kanaleigenschaften und sinken. |
| TcpServerChannel(Int32) |
Initialisiert eine neue Instanz der TcpServerChannel Klasse, die auf den angegebenen Port lauscht. |
| TcpServerChannel(String, Int32, IServerChannelSinkProvider) |
Initialisiert eine neue Instanz der TcpServerChannel Klasse mit dem angegebenen Namen, der auf den angegebenen Port lauscht, und verwendet die angegebene Spüle. |
| TcpServerChannel(String, Int32) |
Initialisiert eine neue Instanz der TcpServerChannel Klasse mit dem angegebenen Namen und überwacht den angegebenen Port. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| ChannelData |
Ruft kanalspezifische Daten ab. |
| ChannelName |
Ruft den Namen des aktuellen Kanals ab. |
| ChannelPriority |
Ruft die Priorität des aktuellen Kanals ab. |
| IsSecured |
Dient zum Abrufen oder Festlegen eines booleschen Werts, der angibt, ob der aktuelle Kanal sicher ist. |
Methoden
| Name | Beschreibung |
|---|---|
| Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
| GetChannelUri() |
Gibt den URI des aktuellen Kanals zurück. |
| GetHashCode() |
Dient als die Standard-Hashfunktion (Geerbt von Object) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| GetUrlsForUri(String) |
Gibt ein Array aller URLs für ein Objekt mit dem angegebenen URI zurück, der in der aktuellen TcpChannel Instanz gehostet wird. |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| Parse(String, String) |
Extrahiert den Kanal-URI und den bekannten Remoteobjekt-URI aus der angegebenen URL. |
| StartListening(Object) |
Weist den aktuellen Kanal an, nach dem Aufruf der StopListening(Object) Methode das Zuhören auf einem Kanal zu starten, um die Überwachung auf dem Kanal zu beenden. |
| StopListening(Object) |
Weist den aktuellen Kanal an, die Überwachung auf Anforderungen zu beenden. |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |