示例#1
0
        static void Main(string[] args)
        {
            // Устанавливаем максимальное и минимальное количество рабочих потоков
            ThreadPool.SetMinThreads(MinimumThreadCount, MinimumThreadCount);
            ThreadPool.SetMaxThreads(MaximumThreadCount, MaximumThreadCount);

            // Создаем экзмепляр сервера и запускаем его в отдельном потоке
            server = new WSServer(8181);
            server.OnClientConnected     += server_OnClientConnected;
            server.OnAvailableToTransmit += server_OnAvailableToTransmit;
            server.OnClientQuit          += server_OnClientQuit;
            server.OnMessageReceived     += server_OnMessageReceived;
            server.OnBinaryReceived      += server_OnBinaryReceived;
            Thread serverThread = new Thread(delegate() { server.Start(); });

            serverThread.Start();

            Thread testThread = new Thread(delegate() { SendTest.Start(server); });

            testThread.Start();

            while (true)
            {
                string line = Console.ReadLine();
                string cmd = line.Split(' ')[0];
                string uidNum, msg;
                int    uid;
                switch (cmd)
                {
                case "send":
                    if (line.IndexOf(' ') == -1)
                    {
                        break;
                    }
                    uidNum = line.Split(' ')[1];
                    if (int.TryParse(uidNum, out uid))
                    {
                        msg = line.Substring("send".Length + uidNum.Length + 2);
                        if (!server.Send(msg, uid))
                        {
                            Console.WriteLine("Error while sending message to client #{0}. Client #{0} does not exist.", uid);
                        }
                    }
                    else
                    {
                        Console.WriteLine("Could not parse client uid.");
                    }
                    break;

                case "broadcast":
                    msg = line.Substring("broadcast".Length + 1);
                    server.Broadcast(msg);
                    break;

                case "close":
                    if (line.IndexOf(' ') == -1)
                    {
                        break;
                    }
                    uidNum = line.Split(' ')[1];
                    if (int.TryParse(uidNum, out uid))
                    {
                        if (!server.Close(uid))
                        {
                            Console.WriteLine("Error while closing client #{0}. Client #{0} does not exist.", uid);
                        }
                    }
                    else
                    {
                        Console.WriteLine("Could not parse client uid.");
                    }
                    break;

                case "closeall":
                    server.CloseAll();
                    break;
                }
            }
        }
示例#2
0
 static void server_OnAvailableToTransmit(object sender, WSClientConnectedEventArgs e)
 {
     server.Send("UID:" + e.UID.ToString(), e.UID);
 }