Aracılığıyla paylaş


TcpServerChannel Sınıf

Tanım

İletileri iletmek için TCP protokollerini kullanan uzak çağrılar için bir sunucu kanalı uygular.

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
Devralma
TcpServerChannel
Uygulamalar

Örnekler

Aşağıdaki kod örneği, uzaktan değiştirilebilir bir türün kullanımını gösterir.

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

Aşağıdaki kod örneği, uzaktan değiştirilebilir bir türü kullanıma açmak için sınıfının kullanımını TcpServerChannel gösterir.

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

Açıklamalar

Önemli

Güvenilmeyen verilerle bu sınıftan yöntemleri çağırmak bir güvenlik riskidir. Bu sınıftaki yöntemleri yalnızca güvenilen verilerle çağırın. Daha fazla bilgi için bkz. Tüm Girişleri Doğrulama.

Kanallar iletileri uzaktan iletişim sınırları (örneğin, bilgisayarlar veya uygulama etki alanları) arasında taşır. sınıfı, TcpServerChannel TCP protokollerini kullanarak iletileri taşır.

Kanallar, uzaktan çağrıları taşımak için .NET Framework uzaktan iletişim altyapısı tarafından kullanılır. İstemci uzak bir nesneye çağrı yaptığında, çağrı bir istemci kanalı tarafından gönderilen ve bir sunucu kanalı tarafından alınan bir ileti halinde seri hale getirilir. Daha sonra seri durumdan çıkarılır ve işlenir. Döndürülen tüm değerler sunucu kanalı tarafından iletilir ve istemci kanalı tarafından alınır.

Sunucu tarafında iletilerin ek işlenmesini gerçekleştirmek için, örnek tarafından işlenen tüm iletilerin IServerChannelSinkProvider geçirildiği arabirimin TcpServerChannel bir uygulamasını belirtebilirsiniz.

Örnek, TcpServerChannel ikili veya SOAP biçiminde seri hale getirilmiş iletileri kabul eder.

Nesne TcpServerChannel , çalışma zamanında bir yapılandırma dosyasında (statik RemotingConfiguration.Configure yöntemi çağırarak) veya program aracılığıyla (bir koleksiyonu oluşturucuya geçirerek IDictionary ) ayarlanabilen ilişkili yapılandırma özelliklerine TcpServerChannel sahiptir. Bu yapılandırma özelliklerinin listesi için bkz. Kanal ve Biçimlendirici Yapılandırma Özellikleri.

Oluşturucular

TcpServerChannel(IDictionary, IServerChannelSinkProvider)

Belirtilen kanal özellikleri ve havuz ile sınıfının yeni bir örneğini TcpServerChannel başlatır.

TcpServerChannel(IDictionary, IServerChannelSinkProvider, IAuthorizeRemotingConnection)

Belirtilen kanal özellikleri, havuz ve yetkilendirme sağlayıcısı ile sınıfının yeni bir örneğini TcpServerChannel başlatır.

TcpServerChannel(Int32)

Belirtilen bağlantı noktasını dinleyen sınıfının yeni bir örneğini TcpServerChannel başlatır.

TcpServerChannel(String, Int32)

Belirtilen ada sahip ve belirtilen bağlantı noktasını dinleyen sınıfının yeni bir örneğini TcpServerChannel başlatır.

TcpServerChannel(String, Int32, IServerChannelSinkProvider)

Belirtilen bağlantı noktasını dinleyen ve belirtilen havuzu kullanan verilen adla sınıfının yeni bir örneğini TcpServerChannel başlatır.

Özellikler

ChannelData

Kanala özgü verileri alır.

ChannelName

Geçerli kanalın adını alır.

ChannelPriority

Geçerli kanalın önceliğini alır.

IsSecured

Geçerli kanalın güvenli olup olmadığını belirten bir Boole değeri alır veya ayarlar.

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetChannelUri()

Geçerli kanalın URI'sini döndürür.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
GetUrlsForUri(String)

Geçerli TcpChannel örnekte barındırılan, belirtilen URI'ye sahip bir nesnenin tüm URL'lerinden oluşan bir dizi döndürür.

MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
Parse(String, String)

Kanal URI'sini ve uzak iyi bilinen nesne URI'sini belirtilen URL'den ayıklar.

StartListening(Object)

Yöntem çağrıldıktan sonra StopListening(Object) kanalda dinlemeyi durdurmak için geçerli kanala bir kanalda dinlemeye başlamasını emreder.

StopListening(Object)

Geçerli kanala istekleri dinlemeyi durdurmasını emreder.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır