System.Runtime.Remoting.Channels.Tcp.TcpServerChannel Class

Assembly: System.Runtime.Remoting.dll
Namespace: System.Runtime.Remoting.Channels.Tcp
Summary
Provides an implementation for a server channel that uses the TCP protocol to transmit messages.
C# Syntax:
public class TcpServerChannel : IChannelReceiver, IChannel
Remarks
By default, the TcpServerChannel will accept either binary or SOAP formatted messages.

Channels transport messages between applications across remoting boundaries (for example application domains, processes, and machines). These crossings include both inbound and outbound. The current channel listens on an endpoint for inbound messages. TcpServerChannel converts the messages sent along using the TCP protocol from binary format into message objects.

If there are common language runtimes at both ends of the channel, then a session is created between the two ends, in order to connect the client and server sink chains on either side of the boundary together. The client part of the channel is located at the end of the client context sink chain. The server part of the channel is located at the start of the server context sink chain. Messages are delivered to the client channel, travel through it, and are received by an instance of the TcpServerChannel. The channel then delivers received and deserialized messages to the first server context sink.

IChannel implementations use channel configuration properties to configure the channel at run time. Channel properties can be specified in a configuration file, or programmatically, inside of an IDictionary. In a configuration file all values are represented by strings, but when building a property IDictionary programmatically, value types can be specified with their native values or with strings.

The following table shows the channel configuration properties that can be specified for the current channel.



Property Description
name Indicates the name of the channel. This property is used to retrieve a specific channel when calling ChannelServices.GetChannel . If this property is not set, the system defaults to "http". If you want to register more than one HttpChannel , each must have a unique name. Set this property to the String.Empty string ("") if you want to ignore names, but avoid naming collisions. The system will allow any number of channels with the String.Empty name.
priority An integer representing the priority assigned to this channel. For server channels, the priority controls the order in which the channel data appears in an ObjRef . Clients will try to connect to the server channels in the order that they are listed in the ObjRef . The default priority is 1, and negative numbers are allowed. The default priority is 1, and negative numbers are allowed.
port An integer specifying the port on which the channel will listen.
supressChannelData true or false . Specifies that the channel will not contribute to the HttpChannel.ChannelData .
useIpAddress true or false . Specifies whether the channel will use the IP address in the publication URL instead of the computer name.
rejectRemoteRequests true or false . Specifies whether to refuse requests originating from other computers. Specifying true allows only inter- AppDomain calls on the local computer.
bindTo An IP address resolving to the current computer that specifies which NIC to bind the current channel to.
machineName A string that specifies the machine name used with the current channel. Overrides the useIpAddress configuration property and the machine name channel data.
See also:
System.Runtime.Remoting.Channels.Tcp Namespace

System.Runtime.Remoting.Channels.Tcp.TcpServerChannel Member List:

Public Constructors
ctor #1 Overloaded:
.ctor(int port)

Initializes a new instance of the TcpServerChannel class at the specified port.
ctor #2 Overloaded:
.ctor(IDictionary properties, IServerChannelSinkProvider sinkProvider)

Initializes a new instance of the TcpServerChannel class with the specified channel properties and the provided IServerChannelSinkProvider.
ctor #3 Overloaded:
.ctor(string name, int port)

Initializes a new instance of the TcpServerChannel class with the given name at the specified port.
ctor #4 Overloaded:
.ctor(string name, int port, IServerChannelSinkProvider sinkProvider)

Initializes a new instance of the TcpServerChannel class at the specified port with the given name and IServerChannelSinkProvider.
Public Properties
ChannelData Read-only

Gets the channel specific data.
ChannelName Read-only

Gets the name of the current channel.
ChannelPriority Read-only

Returns the priority of the current channel.
Public Methods
Equals
(inherited from System.Object)
See base class member description: System.Object.Equals

Derived from System.Object, the primary base class for all objects.
GetChannelUri Returns the URI of the current channel.
GetHashCode
(inherited from System.Object)
See base class member description: System.Object.GetHashCode

Derived from System.Object, the primary base class for all objects.
GetType
(inherited from System.Object)
See base class member description: System.Object.GetType

Derived from System.Object, the primary base class for all objects.
GetUrlsForUri Returns an array of all the URLs for an object with the specified URI, hosted on the current TcpChannel.
Parse Extracts the channel URI and the remote well-known object URI from the specified URL.
StartListening Instructs the current channel to start listening for requests.
StopListening Instructs the current channel to stop listening for requests.
ToString
(inherited from System.Object)
See base class member description: System.Object.ToString

Derived from System.Object, the primary base class for all objects.
Protected Methods
Finalize
(inherited from System.Object)
See base class member description: System.Object.Finalize

Derived from System.Object, the primary base class for all objects.
MemberwiseClone
(inherited from System.Object)
See base class member description: System.Object.MemberwiseClone

Derived from System.Object, the primary base class for all objects.

Hierarchy:


System.Runtime.Remoting.Channels.Tcp.TcpServerChannel Member Details

Overloaded ctor #1
Summary
Initializes a new instance of the TcpServerChannel class at the specified port.
C# Syntax:
public TcpServerChannel(
   int port
);
Parameters:

port

The port at which to activate the new instance of TcpServerChannel.

Return to top


Overloaded ctor #2
Summary
Initializes a new instance of the TcpServerChannel class with the specified channel properties and the provided IServerChannelSinkProvider.
C# Syntax:
public TcpServerChannel(
   IDictionary properties,
   IServerChannelSinkProvider sinkProvider
);
Parameters:

properties

An IDictionary of the channel properties that hold the configuration information for the current channel.

sinkProvider

The IServerChannelSinkProvider to use with the new instance of the TcpServerChannel.

Exceptions
Exception Type Condition
ArgumentException A provided channel property was badly formatted.
Remarks
Channel sinks provide a plug-in point that allows access to the underlying messages flowing through the channel as well as the stream used by the transport mechanism to send messages to a remote object. Channel sinks are also responsible for transporting messages between the client and the server.

Note For more information, see the conceptual topic at MSDN: sinkssinkchains.

Note Channel properties are used to configure the channel at run time. For a list of possible channel properties and an example, see the conceptual topic at MSDN: channelformatterconfigurationproperties.
See also:
MSDN: channelformatterconfigurationproperties

Return to top


Overloaded ctor #3
Summary
Initializes a new instance of the TcpServerChannel class with the given name at the specified port.
C# Syntax:
public TcpServerChannel(
   string name,
   int port
);
Parameters:

name

The name of the new instance of TcpServerChannel.

port

The port at which to activate the new instance of TcpServerChannel.

Remarks
This constructor sets the TcpServerChannel.ChannelName property using the name parameter. If you want to register more than one TcpServerChannel, each must have a unique name. Set name parameter to the String.Empty string ("") if you want to ignore names, but avoid naming collisions. The system will allow any number of channels with the String.Empty name.

Return to top


Overloaded ctor #4
Summary
Initializes a new instance of the TcpServerChannel class at the specified port with the given name and IServerChannelSinkProvider.
C# Syntax:
public TcpServerChannel(
   string name,
   int port,
   IServerChannelSinkProvider sinkProvider
);
Parameters:

name

The name of the new instance of the TcpServerChannel.

port

The port at which to activate the new instance of the TcpServerChannel.

sinkProvider

The IServerChannelSinkProvider to use with the new instance of the TcpServerChannel.

Remarks
This constructor sets the TcpServerChannel.ChannelName property using the name parameter. If you want to register more than one TcpServerChannel, each must have a unique name. Set name parameter to the String.Empty string ("") if you want to ignore names, but avoid naming collisions. The system will allow any number of channels with the String.Empty name.

Return to top


Property: ChannelData (read-only)
Summary
Gets the channel specific data.
C# Syntax:
public object ChannelData {get;}
Implements:
IChannelReceiver.ChannelData
Remarks
This property is used when RemotingServices.Marshal is called and an ObjRef is created.

Return to top


Property: ChannelName (read-only)
Summary
Gets the name of the current channel.
C# Syntax:
public string ChannelName {get;}
Implements:
IChannel.ChannelName
Remarks
This property is used to retrieve a specific channel when calling ChannelServices.GetChannel. If this property is not set, the system defaults to "tcp". If you want to register more than one TcpServerChannel, each must have a unique name. Set this property to the String.Empty string ("") if you want to ignore names, but avoid naming collisions. The system will allow any number of channels with the String.Empty name.

Return to top


Property: ChannelPriority (read-only)
Summary
Returns the priority of the current channel.
C# Syntax:
public int ChannelPriority {get;}
Implements:
IChannel.ChannelPriority
Remarks
For server channels, the priority controls the order in that channel data appears in an ObjRef. Clients will try to connect to the server channels in the order that they are listed in the ObjRef. The default priority is 1, and negative numbers are allowed.

Return to top


Method: Equals(
   object obj
)
Inherited
See base class member description: System.Object.Equals
C# Syntax:
public virtual bool Equals(
   object obj
);

For more information on members inherited from System.Object click on the link above.

Return to top


Method: Finalize()
Inherited
See base class member description: System.Object.Finalize
C# Syntax:
~TcpServerChannel();

For more information on members inherited from System.Object click on the link above.

Return to top


Method: GetChannelUri()
Summary
Returns the URI of the current channel.
C# Syntax:
public string GetChannelUri();
Return Value:
The URI of the current channel.

Return to top


Method: GetHashCode()
Inherited
See base class member description: System.Object.GetHashCode
C# Syntax:
public virtual int GetHashCode();

For more information on members inherited from System.Object click on the link above.

Return to top


Method: GetType()
Inherited
See base class member description: System.Object.GetType
C# Syntax:
public Type GetType();

For more information on members inherited from System.Object click on the link above.

Return to top


Method: GetUrlsForUri(
   string objectUri
)
Summary
Returns an array of all the URLs for an object with the specified URI, hosted on the current TcpChannel.
C# Syntax:
public virtual string[] GetUrlsForUri(
   string objectUri
);
Parameters:

objectUri

The URI of the object for which URLs are required.

Return Value:
An array of the URLs for an object with the specified URI, hosted on the current TcpChannel.
Implements:
IChannelReceiver.GetUrlsForUri
Remarks
This method is used by ChannelServices.GetUrlsForObject.
Example
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels.Tcp;

class Class1 {
   public static void Main() {

      // Create a remotable object.
      TcpServerChannel tcpChannel = new TcpServerChannel(8085);

      WellKnownServiceTypeEntry WKSTE = 
         new WellKnownServiceTypeEntry(typeof(HelloService),
                                       "Service", 
                                       WellKnownObjectMode.Singleton);
      RemotingConfiguration.RegisterWellKnownServiceType(WKSTE);

      RemotingConfiguration.ApplicationName = "HelloServer";

      // Print out the urls for the HelloServer.
      string[] urls = tcpChannel.GetUrlsForUri("HelloServer");
      
      foreach (string url in urls)
         System.Console.WriteLine("{0}", url);
      
   }
}

    

Return to top


Method: MemberwiseClone()
Inherited
See base class member description: System.Object.MemberwiseClone
C# Syntax:
protected object MemberwiseClone();

For more information on members inherited from System.Object click on the link above.

Return to top


Method: Parse(
   string url,
   out string objectURI
)
Summary
Extracts the channel URI and the remote well-known object URI from the specified URL.
C# Syntax:
public string Parse(
   string url,
   out string objectURI
);
Parameters:

url

The URL from which to extract the URI of the remote well-known object.

objectURI

When this method returns, contains a String that holds the URI of the remote well-known object. This parameter is passed uninitialized.

Return Value:
The URI of the current channel.
Implements:
IChannel.Parse
Remarks
The URI of an object is a value that uniquely identifies a specific object instance.
See also:
Uri

Return to top


Method: StartListening(
   object data
)
Summary
Instructs the current channel to start listening for requests.
C# Syntax:
public void StartListening(
   object data
);
Parameters:

data

Optional ininitialization information.

Implements:
IChannelReceiver.StartListening
Remarks
The data object can be used to pass a specific initialization state to the channel.

Return to top


Method: StopListening(
   object data
)
Summary
Instructs the current channel to stop listening for requests.
C# Syntax:
public void StopListening(
   object data
);
Parameters:

data

Optional state information for the channel.

Implements:
IChannelReceiver.StopListening
Remarks
The data object can be used to pass a specific state to the channel.

Return to top


Method: ToString()
Inherited
See base class member description: System.Object.ToString
C# Syntax:
public virtual string ToString();

For more information on members inherited from System.Object click on the link above.

Return to top


Top of page

Copyright (c) 2002 Microsoft Corporation. All rights reserved.