示例#1
0
        static void Main(string[] args)
        {
            SlimCommon.Log.Default.Logger = new SlimCommon.ConsoleLogger();

            var server = new SlimIOCP.Mono.Server();

            server.Start(new IPEndPoint(IPAddress.Parse("192.168.0.10"), 14000));

            SlimIOCP.Mono.IncomingMessage message;
            SlimIOCP.Mono.OutgoingMessage outgoingMessage;

            while (true)
            {
                while (server.TryPopMessage(out message))
                {
                    switch (message.MessageType)
                    {
                    case MessageType.Data:
                        var connection = (SlimIOCP.Mono.Connection)message.Connection;

                        if (!connection.TryCreateMessage(out outgoingMessage))
                        {
                            throw new Exception();
                        }

                        var val = BitConverter.ToInt32(message.Buffer, message.Offset);
                        Console.WriteLine("length : " + message.Length);
                        Console.WriteLine("got " + val + " from client");

                        if (!outgoingMessage.TryWrite(message.Buffer, message.Offset, message.Length))
                        {
                            throw new Exception();
                        }

                        if (!outgoingMessage.TryQueue())
                        {
                            throw new Exception();
                        }

                        server.TryRecycleMessage(message);
                        break;

                    case MessageType.Connected:

                        Console.WriteLine("Client connected");

                        break;
                    }
                }

                server.ReceivedMessageEvent.WaitOne();
            }
        }
示例#2
0
        static void Main(string[] args)
        {
            SlimCommon.Log.Default.Logger = new SlimCommon.ConsoleLogger();

            var server = new SlimIOCP.Mono.Server();
            server.Start(new IPEndPoint(IPAddress.Parse("192.168.0.10"), 14000));

            SlimIOCP.Mono.IncomingMessage message;
            SlimIOCP.Mono.OutgoingMessage outgoingMessage;

            while (true)
            {
                while (server.TryPopMessage(out message))
                {
                    switch (message.MessageType)
                    {
                        case MessageType.Data:
                            var connection = (SlimIOCP.Mono.Connection)message.Connection;

                            if (!connection.TryCreateMessage(out outgoingMessage))
                            {
                                throw new Exception();
                            }

                            var val = BitConverter.ToInt32(message.Buffer, message.Offset);
                            Console.WriteLine("length : " + message.Length);
                            Console.WriteLine("got " + val + " from client");

                            if (!outgoingMessage.TryWrite(message.Buffer, message.Offset, message.Length))
                            {
                                throw new Exception();
                            }

                            if (!outgoingMessage.TryQueue())
                            {
                                throw new Exception();
                            }

                            server.TryRecycleMessage(message);
                            break;

                        case MessageType.Connected:

                            Console.WriteLine("Client connected");

                            break;
                    }
                }

                server.ReceivedMessageEvent.WaitOne();
            }
        }