示例#1
0
 private void Connect()
 {
     if (remotingClass == null)
     {
         TcpChannel clientChannel = new TcpChannel();
         ChannelServices.RegisterChannel(clientChannel, true);
         remotingClass = (RemotingLibrary)Activator.GetObject(typeof(RemotingLibrary),
                                                              string.Format("tcp://localhost:{0}/TestClass", SYS_PORT));
     }
 }
示例#2
0
        static void Main(string[] args)
        {
            TcpChannel clientChannel = new TcpChannel();

            ChannelServices.RegisterChannel(clientChannel, true);

            string connectingString = string.Format("tcp://localhost:{0}/{1}", SYS_PORT, SYS_LIB_NAME);

            remotingClass = (RemotingLibrary)Activator.GetObject(typeof(RemotingLibrary), connectingString);

            if (remotingClass == null)
            {
                Console.WriteLine("Client not connected! Abort!");
                return;
            }

            bool isAdmin  = false;
            int  clientID = remotingClass.RegisterClient(out isAdmin);

            // admin
            if (isAdmin)
            {
                Console.WriteLine("Current client connected as admin.");

                const int rows = 200;
                const int cols = 200;

                int[,] task = new int[rows, cols];
                Random r = new Random();
                for (int i = 0; i < rows; ++i)
                {
                    for (int j = 0; j < cols; ++j)
                    {
                        task[i, j] = r.Next(10);
                    }
                }

                Console.WriteLine("Uploading task...");
                remotingClass.UploadTaskToServer(clientID, task);

                Console.WriteLine("Task uploaded.");

                Console.WriteLine("Press any key to disconnect admin client...");
                Console.ReadKey();

                Console.WriteLine("Disconnecting...");
                remotingClass.UnregisterClient(clientID);

                Console.WriteLine("Ended.");
                return;
            }

            Console.WriteLine("Current client connected as processor client.");

            while (!remotingClass.isWorkFinished())
            {
                Console.WriteLine();

                int[] array = remotingClass.GetClientData(clientID);

                Console.WriteLine("Client received data: ");
                for (int i = 0; i < array.GetLength(0); ++i)
                {
                    Console.Write("{0} ", array[i]);
                }
                Console.WriteLine();

                Console.WriteLine("Sorting...");

                for (int i = 0; i < array.GetLength(0); ++i)
                {
                    for (int j = i; j < array.GetLength(0); ++j)
                    {
                        if (array[i] > array[j])
                        {
                            int a = array[i];

                            array[i] = array[j];
                            array[j] = a;
                        }
                    }
                }

                Console.WriteLine("Client sorted data: ");
                for (int i = 0; i < array.GetLength(0); ++i)
                {
                    Console.Write("{0} ", array[i]);
                }
                Console.WriteLine();

                remotingClass.ReturnClientData(clientID, array);
            }

            remotingClass.UnregisterClient(clientID);

            Console.WriteLine("Client finished.");
        }