IChannelReceiver Interface

Definition

Provides required functions and properties for the receiver channels.

public interface IChannelReceiver : System.Runtime.Remoting.Channels.IChannel
[System.Runtime.InteropServices.ComVisible(true)]
public interface IChannelReceiver : System.Runtime.Remoting.Channels.IChannel
Derived
Attributes
Implements

Examples

class MyCustomChannel : IChannelReceiver
{
   private ChannelDataStore myChannelData;
   private int myChannelPriority = 25;
   // Set the 'ChannelName' to 'MyCustomChannel'.
   private string myChanneName = "tcp";
   // Implement 'ChannelName' property.
   private TcpListener myTcpListener;
   private int myPortNo;
   private bool myListening = false;
   private Thread myThread;
   public MyCustomChannel(int portNo)
   {
      myPortNo = portNo;
      string [] myURI = new string[1];
      myURI[0] = Dns.Resolve(Dns.GetHostName()).AddressList[0] + ":" +
                                                         portNo.ToString();
      // Store the 'URI' in 'myChannelDataStore'.
      myChannelData = new ChannelDataStore(myURI);
      // Create 'myTcpListener' to listen at the 'myPortNo' port.
      myTcpListener = new TcpListener(myPortNo);
      // Create the thread 'myThread'.
      myThread = new Thread(new ThreadStart(myTcpListener.Start));
      this.StartListening(null);
   }
   public string ChannelName
   {
      get
      {
         return myChanneName;
      }
   }
   public int ChannelPriority
   {
      get
      {
         return myChannelPriority;
      }
   }
   public string Parse(string myUrl, out string objectURI)
   {
      Regex myRegex = new Regex("/",RegexOptions.RightToLeft);
      // Check for '/' in 'myUrl' from Right to left.
      Match myMatch = myRegex.Match(myUrl);
      // Get the object URI.
      objectURI = myUrl.Substring(myMatch.Index);
      // Return the channel url.
      return myUrl.Substring(0,myMatch.Index);
   }
   // Implementation of 'IChannelReceiver' interface.
   public object ChannelData
   {
      get
      {
         return myChannelData;
      }
   }

   // Create and send the object URL.
   public string[] GetUrlsForUri(string objectURI)
   {
      string[] myString = new string[1];
      myString[0] = Dns.Resolve(Dns.GetHostName()).AddressList[0]
                                                         + "/" + objectURI;
      return myString;
   }

   // Start listening to the port.
   public void StartListening(object data)
   {
      if(myListening == false)
      {
         myTcpListener.Start();
         myListening = true;
         Console.WriteLine("Server Started Listening !!!");
      }
   }

   // Stop listening to the port.
   public void StopListening(object data)
   {
      if(myListening == true)
      {
         myTcpListener.Stop();
         myListening = false;
         Console.WriteLine("Server Stopped Listening !!!");
      }
   }
}

Remarks

The receiving side of channels must expose the IChannelReceiver interface.

Properties

ChannelData

Gets the channel-specific data.

ChannelName

Gets the name of the channel.

(Inherited from IChannel)
ChannelPriority

Gets the priority of the channel.

(Inherited from IChannel)

Methods

GetUrlsForUri(String)

Returns an array of all the URLs for a URI.

Parse(String, String)

Returns the object URI as an out parameter, and the URI of the current channel as the return value.

(Inherited from IChannel)
StartListening(Object)

Instructs the current channel to start listening for requests.

StopListening(Object)

Instructs the current channel to stop listening for requests.

Applies to

מוצר גירסאות
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1