TcpServerChannel Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Реализует канал сервера для удаленных вызовов, в котором для передачи сообщений используется протокол TCP.
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
- Наследование
-
TcpServerChannel
- Реализации
Примеры
В следующем примере кода показано использование типа remotable.
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);
}
}
В следующем примере кода показано использование класса для TcpServerChannel предоставления remotable типа.
#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();
}
}
Комментарии
Важно!
Вызов методов этого класса для ненадежных данных представляет угрозу безопасности. Вызывайте методы класса только для надежных данных. Дополнительные сведения см. в разделе Проверка всех входных данных.
Каналы передают сообщения через границы удаленного взаимодействия (например, компьютеры или домены приложений). Класс TcpServerChannel транспортирует сообщения по протоколу TCP.
Каналы используются инфраструктурой удаленного взаимодействия .NET Framework для передачи удаленных вызовов. Когда клиент выполняет вызов удаленного объекта, вызов сериализуется в сообщение, которое отправляется клиентским каналом и принимается каналом сервера. Затем он десериализуется и обрабатывается. Все возвращаемые значения передаются каналом сервера и принимаются клиентским каналом.
Чтобы выполнить дополнительную обработку сообщений на стороне сервера, можно указать реализацию IServerChannelSinkProvider интерфейса, через который передаются все сообщения, обработанные TcpServerChannel экземпляром .
Экземпляр TcpServerChannel принимает сообщения, сериализованные в двоичном формате или формате SOAP.
Объект TcpServerChannel имеет связанные свойства конфигурации, которые можно задать во время выполнения в файле конфигурации (путем вызова статического RemotingConfiguration.Configure метода) или программно (путем передачи IDictionary коллекции конструктору TcpServerChannel ). Список этих свойств конфигурации см. в разделе Свойства конфигурации канала и модуля форматирования.
Конструкторы
TcpServerChannel(IDictionary, IServerChannelSinkProvider) |
Инициализирует новый экземпляр класса TcpServerChannel с указанными свойствами канала и приемником. |
TcpServerChannel(IDictionary, IServerChannelSinkProvider, IAuthorizeRemotingConnection) |
Инициализирует новый экземпляр класса TcpServerChannel с указанными свойствами канала, приемником и поставщиком авторизации. |
TcpServerChannel(Int32) |
Инициализирует новый экземпляр класса TcpServerChannel, который ожидает передачу данных для указанного порта. |
TcpServerChannel(String, Int32) |
Инициализирует новый экземпляр класса TcpServerChannel с заданным именем, который прослушивает указанный порт. |
TcpServerChannel(String, Int32, IServerChannelSinkProvider) |
Инициализирует новый экземпляр класса TcpServerChannel с заданным именем, который ожидает передачу данных для указанного порта и использует указанный приемник. |
Свойства
ChannelData |
Получает данные, относящиеся к каналу. |
ChannelName |
Получает имя текущего канала. |
ChannelPriority |
Получает приоритет текущего канала. |
IsSecured |
Возвращает или задает логическое значение, позволяющее определить, является ли текущий канал безопасным. |
Методы
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetChannelUri() |
Возвращает универсальный код ресурса (URI) текущего канала. |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
GetUrlsForUri(String) |
Возвращает массив всех URL-адресов объекта с указанным универсальным кодом ресурса (URI), находящимся в текущем экземпляре TcpChannel. |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
Parse(String, String) |
Выделяет универсальный код ресурса (URI) канала и универсальный код ресурса (URI) известного удаленного объекта из указанного URL-адреса. |
StartListening(Object) |
Указывает текущему каналу начать прослушивание канала после вызова метода StopListening(Object) для остановки прослушивания канала. |
StopListening(Object) |
Дает текущему каналу команду на прекращение отслеживания запросов. |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |