TcpServerChannel Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Implementerar en serverkanal för fjärranrop som använder TCP-protokollet för att överföra meddelanden.
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
- Arv
-
TcpServerChannel
- Implementeringar
Exempel
I följande kodexempel visas användningen av en fjärranslutningsbar typ.
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);
}
}
I följande kodexempel visas hur klassen används TcpServerChannel för att exponera en fjärranslutningsbar typ.
#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();
}
}
Kommentarer
Important
Att anropa metoder från den här klassen med ej betrodda data är en säkerhetsrisk. Anropa metoderna från den här klassen endast med betrodda data. För mer information, se Verifiera alla indata.
Kanaler transporterar meddelanden över fjärrkommunikationsgränser (till exempel datorer eller programdomäner). Klassen TcpServerChannel transporterar meddelanden med TCP-protokollet.
Kanaler används av .NET Framework-fjärrkommunikationsinfrastrukturen för att transportera fjärranrop. När en klient anropar ett fjärrobjekt serialiseras anropet till ett meddelande som skickas av en klientkanal och tas emot av en serverkanal. Den deserialiseras och bearbetas sedan. Alla returnerade värden överförs av serverkanalen och tas emot av klientkanalen.
Om du vill utföra ytterligare bearbetning av meddelanden på serversidan kan du ange en implementering av IServerChannelSinkProvider gränssnittet genom vilket alla meddelanden som bearbetas av instansen TcpServerChannel skickas.
Instansen TcpServerChannel accepterar meddelanden som serialiseras i binärt format eller SOAP-format.
Ett TcpServerChannel objekt har associerade konfigurationsegenskaper som kan anges vid körning antingen i en konfigurationsfil (genom att anropa den statiska RemotingConfiguration.Configure metoden) eller programmatiskt (genom att skicka en IDictionary samling till TcpServerChannel konstruktorn). En lista över dessa konfigurationsegenskaper finns i Konfigurationsegenskaper för kanal och formatering.
Konstruktorer
| Name | Description |
|---|---|
| TcpServerChannel(IDictionary, IServerChannelSinkProvider, IAuthorizeRemotingConnection) |
Initierar en ny instans av TcpServerChannel klassen med angivna kanalegenskaper, mottagare och auktoriseringsprovider. |
| TcpServerChannel(IDictionary, IServerChannelSinkProvider) |
Initierar en ny instans av TcpServerChannel klassen med angivna kanalegenskaper och mottagare. |
| TcpServerChannel(Int32) |
Initierar en ny instans av TcpServerChannel klassen som lyssnar på den angivna porten. |
| TcpServerChannel(String, Int32, IServerChannelSinkProvider) |
Initierar en ny instans av TcpServerChannel klassen med det angivna namnet, som lyssnar på den angivna porten och använder den angivna mottagaren. |
| TcpServerChannel(String, Int32) |
Initierar en ny instans av TcpServerChannel klassen med det angivna namnet och som lyssnar på den angivna porten. |
Egenskaper
| Name | Description |
|---|---|
| ChannelData |
Hämtar kanalspecifika data. |
| ChannelName |
Hämtar namnet på den aktuella kanalen. |
| ChannelPriority |
Hämtar prioriteten för den aktuella kanalen. |
| IsSecured |
Hämtar eller anger ett booleskt värde som anger om den aktuella kanalen är säker. |
Metoder
| Name | Description |
|---|---|
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetChannelUri() |
Returnerar URI:n för den aktuella kanalen. |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| GetUrlsForUri(String) |
Returnerar en matris med alla URL:er för ett objekt med angiven URI som finns på den aktuella TcpChannel instansen. |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| Parse(String, String) |
Extraherar kanal-URI:n och den välkända fjärrobjekt-URI:n från den angivna URL:en. |
| StartListening(Object) |
Instruerar den aktuella kanalen att börja lyssna på en kanal när StopListening(Object) metoden har anropats för att sluta lyssna på kanalen. |
| StopListening(Object) |
Instruerar den aktuella kanalen att sluta lyssna efter begäranden. |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |