Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase TcpChannel

 

Proporciona una implementación de canal que usa el protocolo TCP para transmitir mensajes.

Espacio de nombres:   System.Runtime.Remoting.Channels.Tcp
Ensamblado:  System.Runtime.Remoting (en System.Runtime.Remoting.dll)

System.Object
  System.Runtime.Remoting.Channels.Tcp.TcpChannel

public class TcpChannel : IChannelReceiver, IChannel, IChannelSender, 
	ISecurableChannel

NombreDescripción
System_CAPS_pubmethodTcpChannel()

Inicializa una nueva instancia de la TcpChannel clase activando un canal de cliente y no un canal del servidor.

System_CAPS_pubmethodTcpChannel(IDictionary, IClientChannelSinkProvider, IServerChannelSinkProvider)

Inicializa una nueva instancia de la TcpChannel clase con las propiedades de configuración especificado y receptores.

System_CAPS_pubmethodTcpChannel(Int32)

Inicializa una nueva instancia de la TcpChannel clase con un canal de servidor que escucha en el puerto especificado.

NombreDescripción
System_CAPS_pubpropertyChannelData

Obtiene los datos específicos del canal.

System_CAPS_pubpropertyChannelName

Obtiene el nombre del canal actual.

System_CAPS_pubpropertyChannelPriority

Obtiene la prioridad del canal actual.

System_CAPS_pubpropertyIsSecured

Obtiene o establece un valor booleano que indica si el canal actual es seguro.

NombreDescripción
System_CAPS_pubmethodCreateMessageSink(String, Object, String)

Devuelve un receptor de mensajes del canal que envía mensajes al objeto de datos de dirección URL o el canal especificado.

System_CAPS_pubmethodEquals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por el recolector de basura. (Heredado de Object).

System_CAPS_pubmethodGetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethodGetUrlsForUri(String)

Devuelve una matriz de todas las direcciones URL de un objeto con el URI especificado, hospedadas en actual TcpChannel.

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_pubmethodParse(String, String)

Extrae el URI del canal y el URI del objeto conocido remoto de la dirección URL especificada.

System_CAPS_pubmethodStartListening(Object)

Indica al canal actual que empiece a escuchar las solicitudes.

System_CAPS_pubmethodStopListening(Object)

Indica al canal actual para dejar de escuchar las solicitudes.

System_CAPS_pubmethodToString()

Devuelve una cadena que representa al objeto actual. (Heredado de Object).

Los canales transportan mensajes entre límites remotos (por ejemplo, entre equipos en dominios de aplicación). La TcpChannel clase es una clase para comodidad que combina la funcionalidad de la TcpClientChannel (clase) y la TcpServerChannel clase.

La infraestructura de comunicación remota de .NET Framework utilizan canales para transportar las llamadas remotas. Cuando un cliente realiza una llamada a un objeto remoto, la llamada se serializa en un mensaje que se envía por un canal de cliente y se recibe por un canal de servidor. A continuación, se deserializa y se procesa. Los valores devueltos que se transmiten por el canal de servidor y recibidos por el canal de cliente.

Para realizar un procesamiento adicional de mensajes, puede especificar las implementaciones de la IClientChannelSinkProvider y IServerChannelSinkProvider a través de que todos los mensajes procesan por el TcpChannel se pasan.

Un TcpChannel objeto asociado a las propiedades de configuración que se pueden establecer en tiempo de ejecución en un archivo de configuración (invocando estático RemotingConfiguration.Configure método) o mediante programación (pasando una IDictionary colección a la TcpChannel constructor). Para obtener más información sobre propiedades de configuración de canal, consulte Channel and Formatter Configuration Properties.

System_CAPS_noteNota

Si el equipo del servidor está ejecutando Windows 95/98/Me, el servidor TcpChannel no se puede especificar como seguro.

En el ejemplo de código siguiente se muestra cómo utilizar un TcpChannel para configurar un servidor remoto y el cliente. El ejemplo contiene tres partes, un servidor, un cliente y un objeto remoto utilizado por el servidor y el cliente.

En el ejemplo de código siguiente se muestra un servidor:

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.Demand)]
    public static void Main(string[] args)
    {
        // Create the server channel.
        TcpChannel serverChannel = new TcpChannel(9090);

        // Register the server channel.
        ChannelServices.RegisterChannel(serverChannel);

        // Show the name of the channel.
        Console.WriteLine("The name of the channel is {0}.", 
            serverChannel.ChannelName);

        // Show the priority of the channel.
        Console.WriteLine("The priority of the channel is {0}.", 
            serverChannel.ChannelPriority);

        // Show the URIs associated with the channel.
        ChannelDataStore data = (ChannelDataStore) serverChannel.ChannelData;
        foreach (string uri in data.ChannelUris)
        {
            Console.WriteLine("The channel URI is {0}.", uri);
        }

        // Expose an object for remote calls.
        RemotingConfiguration.RegisterWellKnownServiceType(
            typeof(RemoteObject), "RemoteObject.rem", 
            WellKnownObjectMode.Singleton);

        // Parse the channel's URI.
        string[] urls = serverChannel.GetUrlsForUri("RemoteObject.rem");
        if (urls.Length > 0)
        {
            string objectUrl = urls[0];
            string objectUri;
            string channelUri = serverChannel.Parse(objectUrl, out objectUri);
            Console.WriteLine("The object URL is {0}.", objectUrl);
            Console.WriteLine("The object URI is {0}.", objectUri);
            Console.WriteLine("The channel URI is {0}.", channelUri);
        }

        // Wait for the user prompt.
        Console.WriteLine("Press ENTER to exit the server.");
        Console.ReadLine();
    }
}

En el ejemplo de código siguiente se muestra a un cliente para este servidor:

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

public class Client
{
[SecurityPermission(SecurityAction.Demand)]
    public static void Main(string[] args)
    {
        // Create the channel.
        TcpChannel clientChannel = new TcpChannel();

        // Register the channel.
        ChannelServices.RegisterChannel(clientChannel, false);

        // Register as client for remote object.
        WellKnownClientTypeEntry remoteType = new WellKnownClientTypeEntry(
            typeof(RemoteObject),"tcp://localhost:9090/RemoteObject.rem");
        RemotingConfiguration.RegisterWellKnownClientType(remoteType);

        // Create a message sink.
        string objectUri;
        System.Runtime.Remoting.Messaging.IMessageSink messageSink = 
            clientChannel.CreateMessageSink(
                "tcp://localhost:9090/RemoteObject.rem", null,
                out objectUri);
        Console.WriteLine("The URI of the message sink is {0}.", 
            objectUri);
        if (messageSink != null)
        {
            Console.WriteLine("The type of the message sink is {0}.", 
                messageSink.GetType().ToString());
        }

        // Create an instance of the remote object.
        RemoteObject service = new RemoteObject(); 

        // Invoke a method on the remote object.
        Console.WriteLine("The client is invoking the remote object.");
        Console.WriteLine("The remote object has been called {0} times.",
            service.GetCount());
    }
}

En el ejemplo de código siguiente se muestra el objeto remoto utilizado por el servidor y el cliente:

using System;
using System.Runtime.Remoting;

// Remote object.
public class RemoteObject : MarshalByRefObject
{
    private int callCount = 0;

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

.NET Framework
Disponible desde 1.1

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: