Question

This is my Hello World Remoting App.

using System;
using System.Collections.Generic;
using System.Text;

namespace Remoting__HelloWorld.UI.Client
{
    public interface MyInterface
    {
        int FunctionOne(string str);
    }
}

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

namespace Remoting__HelloWorld.UI.Client
{
    class MyClient
    {
        public static void Main()
        {
            TcpChannel tcpChannel = new TcpChannel();

            ChannelServices.RegisterChannel(tcpChannel);

            MyInterface remoteObj = (MyInterface) 
            Activator.GetObject(typeof(MyInterface), "tcp://localhost:8080/FirstRemote");

            Console.WriteLine(remoteObj.FunctionOne("Hello World!"));
        }
    }
}


using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using Remoting__HelloWorld.UI.Client;

namespace Remoting__HelloWorld.UI.Server
{
    public class MyRemoteClass : MarshalByRefObject, MyInterface
    {
        public int FunctionOne(string str)
        {
            return str.Length;
        }
    }
}


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

namespace Remoting__HelloWorld.UI.Server
{
    class Program
    {
        static void Main(string[] args)
        {
            TcpChannel tcpChannel = new TcpChannel(9999);

            ChannelServices.RegisterChannel(tcpChannel);

            RemotingConfiguration.RegisterWellKnownServiceType(typeof(MyRemoteClass), "FirstRemote", WellKnownObjectMode.SingleCall);

            System.Console.WriteLine("Press ENTER to quit");
            System.Console.ReadLine();
        }
    }
}

But after running this app, I am getting the following Exception:

No connection could be made because the target machine 
actively refused it 127.0.0.1:8080

How can I fix this?

Was it helpful?

Solution

Either change the server like this:

TcpChannel tcpChannel = new TcpChannel(8080);

or change the client like this:

Activator.GetObject(typeof(MyInterface), "tcp://localhost:9999/FirstRemote");

On the server side, you're opening a channel on the specified port number (in your example, you're using port 9999). In essence, this tells the server to 'listen' for incoming requests on port 9999. On the client side, you tell it what port number to connect to (in your example, you're using port 8080). So you have a situation where your server is listening on port 9999, but your client is trying to connect on port 8080. These port numbers must match.

OTHER TIPS

the server tcpChannel is 9999 the client requests towards 8080

Your server is opening the channel on port 9999 while the client is looking for 8080.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top