Exemple #1
0
        static void Main(string[] args)
        {
            try
            {
                // Create a server that will register the service name 'myapp'.
                using (DdeServer server = new MyServer("myapp"))
                {
                    // Register the service name.
                    server.Register();

                    // Wait for the user to press ENTER before proceding.
                    Console.WriteLine("Press ENTER to quit...");
                    Console.ReadLine();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                Console.WriteLine("Press ENTER to quit...");
                Console.ReadLine();
            }
        }
        static void Main(string[] args)
        {
            try
            {
                // Create a server that will register the service name 'myapp'.
                using (DdeServer server = new MyServer("myapp"))
                {
                    // Register the service name.
                    server.Register();

                    // Wait for the user to press ENTER before proceding.
                    Console.WriteLine("Press ENTER to quit...");
                    Console.ReadLine();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                Console.WriteLine("Press ENTER to quit...");
                Console.ReadLine();
            }

        }
        public static void RunWebSocketServer()
        {
            using (var server = new MyServer())
            {
                server.Start(IPAddress.Loopback, 5001);
                Console.WriteLine($"Running on {server.IP}:{server.Port}...");
                CancellationTokenSource cancel = new CancellationTokenSource();

                bool keepGoing = true, writeLegend = true, writeStatus = true;
                while (keepGoing)
                {
                    if (writeLegend)
                    {
                        Console.WriteLine("c: start client");
                        Console.WriteLine("c ###: start ### clients");
                        Console.WriteLine("b: broadbast from server");
                        Console.WriteLine("s: send from clients");
                        Console.WriteLine("p: ping");
                        Console.WriteLine("l: toggle logging");
                        Console.WriteLine("cls: clear console");
                        Console.WriteLine("xc: close at client");
                        Console.WriteLine("xs: close at server");
                        Console.WriteLine($"bf: toggle {nameof(server.BufferFragments)}");
                        Console.WriteLine("frag: send fragmented message from clients");
                        Console.WriteLine("q: quit");
                        Console.WriteLine("stat: write status");
                        Console.WriteLine("?: help");
                        writeLegend = false;
                    }
                    if (writeStatus)
                    {
                        Console.WriteLine($"clients: {ClientCount}; server connections: {server.ConnectionCount}");
                        writeStatus = false;
                    }

                    var line = Console.ReadLine();
                    switch (line)
                    {
                    case null:
                    case "cls":
                        Console.Clear();
                        break;

                    case "q":
                        keepGoing = false;
                        break;

                    case "stat":
                        writeStatus = true;
                        break;

                    case "?":
                        writeLegend = true;
                        break;

                    case "l":
                        logging = !logging;
                        Console.WriteLine("logging is now " + (logging ? "on" : "off"));
                        break;

                    case "bf":
                        server.BufferFragments = !server.BufferFragments;
                        Console.WriteLine($"{nameof(server.BufferFragments)} is now " + (server.BufferFragments ? "on" : "off"));
                        break;

                    case "xc":
                        CloseAllClients(cancel.Token).ContinueWith(t =>
                        {
                            try
                            {
                                Console.WriteLine($"Closed {t.Result} clients");
                            }
                            catch (Exception e)
                            {
                                WriteError(e);
                            }
                        });
                        break;

                    case "xs":
                        server.CloseAllAsync("nuked from orbit").ContinueWith(t =>
                        {
                            try
                            {
                                Console.WriteLine($"Closed {t.Result} connections at the server");
                            }
                            catch (Exception e)
                            {
                                WriteError(e);
                            }
                        });
                        break;

                    case "b":
                        server.BroadcastAsync("hello to all clients").ContinueWith(t =>
                        {
                            try
                            {
                                Console.WriteLine($"Broadcast to {t.Result} clients");
                            }
                            catch (Exception e)
                            {
                                WriteError(e);
                            }
                        });
                        break;

                    case "s":
                        SendFromClients(cancel.Token).ContinueWith(t =>
                        {
                            try
                            {
                                Console.WriteLine($"Sent from {t.Result} clients");
                            }
                            catch (Exception e)
                            {
                                WriteError(e);
                            }
                        });
                        break;

                    case "frag":
                        SendFragmentedFromClients(cancel.Token).ContinueWith(t =>
                        {
                            try
                            {
                                Console.WriteLine($"Sent fragmented from {t.Result} clients");
                            }
                            catch (Exception e)
                            {
                                WriteError(e);
                            }
                        });
                        break;

                    case "c":
                        StartClients(cancel.Token);
                        break;

                    case "p":
                        server.PingAsync("ping!").ContinueWith(t =>
                        {
                            try
                            {
                                Console.WriteLine($"Pinged {t.Result} clients");
                            }
                            catch (Exception e)
                            {
                                WriteError(e);
                            }
                        });
                        break;

                    default:
                        var match = Regex.Match(line, "c ([0-9]+)");
                        int i;
                        if (match.Success && int.TryParse(match.Groups[1].Value, out i) && i.ToString() == match.Groups[1].Value && i >= 1)
                        {
                            StartClients(cancel.Token, i);
                        }
                        else
                        {
                            writeLegend = true;
                        }
                        break;
                    }
                }
                Console.WriteLine("Shutting down...");
                cancel.Cancel();
            }
        }