[Mono-devel-list] Problem with Remoting between Windows and Linux
Jean-Marc André
jeanmarc.andre at cpe.fr
Tue Jun 8 12:20:38 EDT 2004
Hi,
Could you please fill a bug report on http://bugzilla.ximian.com
(joining the source files of your test case application).
Thank you.
Clinton A. Pierce a écrit :
> Using MCS 0.95 and Mono 0.95 the following client/server pair works
> fine (shortened example from ORA's Programming C#) as long as the
> client and the server are on the same architecture.
>
> Server Client
> Linux-Linux OK
> Win32-Win32 (2k) OK
> Linux-Win32 Fails
> Win32-Linux Cannot test, firewalls
>
> The error that is thrown in the client is:
> "The object with ID 1 was referenced in a fixup but does not exist."
>
> When running the client under Windows and the server under Linux. The
> error occurs at the line:
>
> double sum = calc.Add((double)3.0, (double)4.0);
>
> Recommendations?
>
>
> Server Code:
>
> using System;
> using System.Runtime.Remoting;
> using System.Runtime.Remoting.Channels;
> using System.Runtime.Remoting.Channels.Http;
> namespace MyServer
> {The object with ID 1 was referenced in a fixup but does not exist.
> public class Calculator : MarshalByRefObject, ICalc
> {
> public Calculator()
> {
> Console.WriteLine("Calculator Constructor...");
> }
> public double Add(double x, double y)
> {
> Console.WriteLine("Called add...");
> return x + y;
> }
> public double Mult(double x, double y)
> {
> Console.WriteLine("Called mult...");
> return x * y;
> }
> }
> public class ServerTest
> {
> public static void Main()
> {
> HttpChannel chan = new HttpChannel(65100);
> ChannelServices.RegisterChannel(chan);
> Type calcType =
> Type.GetType("MyServer.Calculator");
>
> RemotingConfiguration.RegisterWellKnownServiceType
> (calcType, "theEndPoint",
> WellKnownObjectMode.SingleCall);
> Console.WriteLine("Press [enter] to exit...");
> Console.ReadLine();
> }
> }
> }
>
>
> Client Code:
> using System;
> using System.Runtime.Remoting;
> using System.Runtime.Remoting.Channels;
> using System.Runtime.Remoting.Channels.Http;
> namespace MyServer
> {
> class Class1
> {
> [STAThread]
> static void Main(string[] args)
> {
> HttpChannel chan = new HttpChannel(0);
> ChannelServices.RegisterChannel(chan);
> MarshalByRefObject obj = (MarshalByRefObject)
>
> RemotingServices.Connect(typeof(MyServer.ICalc),
>
> "http://127.0.0.1:65100/theEndPoint");
> try
> {
> MyServer.ICalc calc = obj as
> MyServer.ICalc;
> double sum = calc.Add((double)3.0,
> (double)4.0);
> Console.WriteLine("Sum: " +
> sum.ToString());
> }
> catch (System.Exception ex)
> {
> Console.WriteLine("Exception caught:
> \n" + ex.Message);
> }
> return;
> }
> }
> }
>
> This code should be compiled to a DLL and used as a resource to both:
> using System;
> namespace MyServer
> {
> public interface ICalc
> {
> double Add(double x, double y);
> double Mult(double x, double y);
> }
>
> }
>
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
More information about the Mono-devel-list
mailing list