public Client(IMSDADServer server, String userId, String serverUrl, String ClientURL) { this.CurrentServer = server; this.serverId = server.GetServerID(); this.ClientId = userId; this.ClientURL = ClientURL; this.milliseconds = 0; this.CurrentServerUrl = serverUrl; }
public void ReconnectingClient() { Console.WriteLine("The server " + CurrentServerUrl + " crashed, reconnecting to a new server"); //Choose random server to connect to Random r = new Random(); String key = KnownServers.Keys.ToList()[r.Next(0, KnownServers.Count)]; CurrentServerUrl = KnownServers[key]; try { Console.WriteLine("Trying to reconnect this server: " + CurrentServerUrl); CurrentServer = (IMSDADServer)Activator.GetObject(typeof(IMSDADServer), CurrentServerUrl); KnownServers = CurrentServer.NewClient(ClientURL, ClientId); Console.WriteLine("The current server is now: " + CurrentServerUrl); } catch (System.Net.Sockets.SocketException) { ReconnectingClient(); } }
static void Main(string[] args) { if (args.Length != 6) { System.Console.WriteLine("<usage> Client username client_port network_name server_url script_file client_ip"); Environment.Exit(1); } TcpChannel channel = new TcpChannel(Int32.Parse(args[1])); ChannelServices.RegisterChannel(channel, false); IMSDADServer server = (IMSDADServer)Activator.GetObject(typeof(IMSDADServer), args[3]); Console.WriteLine("This is the first server I'm connecting to!" + args[3]); if (server == null) { System.Console.WriteLine("Server could not be contacted"); Environment.Exit(1); } else { Console.WriteLine("CLIENT BEGINING"); String url = "tcp://" + args[5] + ":" + args[1] + "/" + args[2]; Client client = new Client(server, args[0], args[3], url); RemotingServices.Marshal(client, args[2], typeof(Client)); //Register Client with server client.KnownServers = server.NewClient(url, args[0]); string randomClientUrl = server.GetRandomClient(client.ClientId); if (randomClientUrl != null) { Console.WriteLine("THE RANDOM CLIENT IS: " + randomClientUrl); IMSDADClientToClient otherClient = (IMSDADClientToClient)Activator.GetObject(typeof(IMSDADClientToClient), randomClientUrl); client.Meetings = otherClient.SendMeetings(); } else { Console.WriteLine("NO OTHER CLIENT IN THE SYSTEM"); } if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + args[4])) { StreamReader reader = File.OpenText(AppDomain.CurrentDomain.BaseDirectory + args[4]); Console.WriteLine("Press R to run the entire script, or S to start run step by step. Enter Key to each step"); int state = 0; //To run everything, press R if (Console.ReadLine().Equals("R")) { state = 1; } client.ParseScript(reader.ReadLine, state); reader.Close(); } else { Console.WriteLine("Error: File provided does not exist"); } client.ParseScript(Console.ReadLine, 1); } }