Freigeben über


TcpServerChannel-Klasse

Implementiert einen Serverchannel für Remoteaufrufe, der das TCP-Protokoll zum Übertragen von Meldungen verwendet.

Namespace: System.Runtime.Remoting.Channels.Tcp
Assembly: System.Runtime.Remoting (in system.runtime.remoting.dll)

Syntax

'Declaration
Public Class TcpServerChannel
    Implements IChannelReceiver, IChannel, ISecurableChannel
'Usage
Dim instance As TcpServerChannel
public class TcpServerChannel : IChannelReceiver, IChannel, ISecurableChannel
public ref class TcpServerChannel : IChannelReceiver, IChannel, ISecurableChannel
public class TcpServerChannel implements IChannelReceiver, IChannel, 
    ISecurableChannel
public class TcpServerChannel implements IChannelReceiver, IChannel, 
    ISecurableChannel

Hinweise

Channels transportieren Meldungen über Remotinggrenzen hinweg (z. B. zwischen Computern oder Anwendungsdomänen). Die TcpServerChannel-Klasse transportiert Meldungen mithilfe des TCP-Protokolls.

Channels werden von der .NET Framework Remoting-Infrastruktur verwendet, um Remoteaufrufe zu transportieren. Wenn ein Client ein Remoteobjekt aufruft, wird der Aufruf in eine Meldung serialisiert, die von einem Clientchannel gesendet und von einem Serverchannel empfangen wird. Anschließend erfolgt die Deserialisierung und Verarbeitung. Alle zurückgegebenen Werte werden vom Serverchannel gesendet und vom Clientchannel empfangen.

Um eine zusätzliche Verarbeitung von Meldungen auf Serverseite auszuführen, können Sie eine Implementierung der IServerChannelSinkProvider-Schnittstelle angeben, die alle von der TcpServerChannel-Schnittstelle verarbeiteten Meldungen durchlaufen.

Die TcpServerChannel-Instanz akzeptiert in binärem oder SOAP-Format serialisierte Meldungen.

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 das Übergeben einer IDictionary-Auflistung an den TcpServerChannel-Konstruktor) festgelegt werden können. Eine Liste mit diesen Konfigurationseigenschaften finden Sie unter Konfigurationseigenschaften für Channel und Formatierungsprogramme.

Hinweis

Wenn der Servercomputer unter Windows 95/98/Me ausgeführt wird, kann der TcpServerChannel nicht als sicher angegeben werden.

Beispiel

Im folgenden Codebeispiel wird die Verwendung eines remotefähigen Typs veranschaulicht.

using System;
using System.Runtime.Remoting;

public class Remotable : MarshalByRefObject
{

    private int callCount = 0;

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

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

Im folgenden Codebeispiel wird die Verwendung der TcpServerChannel-Klasse veranschaulicht, um einen remotefähigen Typ verfügbar zu machen.

using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using System.Security.Permissions;

public class Server
{
    [SecurityPermission(SecurityAction.LinkDemand)]
    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();

    }

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

Vererbungshierarchie

System.Object
  System.Runtime.Remoting.Channels.Tcp.TcpServerChannel

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

TcpServerChannel-Member
System.Runtime.Remoting.Channels.Tcp-Namespace