public static void Main(string[] args) { AppSettings settings = new AppSettings(); settings.ClientConnectionTimeout = 10000; if (!LoadSettings(settings, args)) { Console.WriteLine("Bad or no parameters given"); Console.WriteLine("Usage: Knock -a[ipaddress] -p[port]"); return; } _localClient = new ClientInstance(settings); _localClient.LostConnection += new EventHandler<ObviousCode.Interlace.BitTunnelLibrary.Events.ExceptionEventArgs>(_localClient_LostConnection); _localClient.ConnectionMade += new EventHandler(_localClient_ConnectionMade); _localClient.ConnectionTerminated += new EventHandler(_localClient_ConnectionTerminated); Console.Write ("Starting Server ... "); _server = new ServerInstance(settings); _server.ConnectionMade += new EventHandler(_server_ConnectionMade); _server.ConnectionTerminated += new EventHandler(_server_ConnectionTerminated); _server.LostConnection += new EventHandler<ObviousCode.Interlace.BitTunnelLibrary.Events.ExceptionEventArgs>(_server_LostConnection); _server.Connect(); Console.WriteLine(); Console.WriteLine ("Server started"); Console.WriteLine(); LoadCommands(); MountedFileCache.Cache.Client = _localClient; MountedFileCache.Cache.Server = _server; MountedFileCache.Cache.PromptRequested += new EventHandler(Cache_PromptRequested); try { Console.Write ("Preparing local client ... "); if (!_localClient.Connect()) { Console.WriteLine("Unable to connect ..."); Console.WriteLine("Stopping ..."); Console.WriteLine("Bye"); Console.ReadLine(); return; } } catch (Exception e) { Console.WriteLine ("Unable to prepare locale client: {0}", e.Message); Console.ReadLine(); Console.WriteLine("Bye"); return; } _currentPath = "/"; Console.WriteLine(); Console.WriteLine("Welcome. Type \"quit\" to exit"); Console.WriteLine(); string line = ""; Console.Write(Cursor); while(true) { if (_forceQuit) break; line = Console.ReadLine(); if (line == string.Empty) { Console.Write(Cursor); continue; } if (line == "quit") { ConsoleKeyInfo response; do { Console.WriteLine(); Console.Write("Quit? (Y/N)"); response = Console.ReadKey(); } while (response.Key != ConsoleKey.Y && response.Key != ConsoleKey.N); if (response.Key == ConsoleKey.Y) { break; } else { Console.WriteLine(); Console.Write(Cursor); continue; } } try { ParseCommand(line); } catch (Exception e) { Console.WriteLine ("System Error: {0}", e.Message); } Console.Write(Cursor); } _server.Dispose(); _localClient.Dispose(); Console.WriteLine("Bye"); }