Ejemplo n.º 1
0
        public static void AcceptCallback(IAsyncResult ar)
        {
            // Signal the main thread to continue.
            allDone.Set();
            Console.Write("Someone joined the Hell");

            // Get the socket that handles the client request.
            Socket      listener = (Socket)ar.AsyncState;
            Socket      handler  = listener.EndAccept(ar);
            StateObject state    = new StateObject
            {
                socket = handler,
                buffer = new byte[100]
            };

            while (true)
            {
                handler.BeginReceive(state.buffer, 0, state.buffer.Length, 0, new AsyncCallback(ReceiveCallback), handler);
                receiveDone.WaitOne();
                char[] delimiter = { '-' };

                string[] msg = Encoding.ASCII.GetString(state.buffer).Split(delimiter);

                state.buffer = new byte[Convert.ToInt32(msg[1])];



                switch (msg[0])
                {
                case "Login":



                    handler.BeginReceive(state.buffer, 0, state.buffer.Length, 0, new AsyncCallback(ReceiveCallback), handler);
                    receiveDone.WaitOne();
                    User user = User.Deserialize(state.buffer);

                    Console.WriteLine(user);
                    Console.WriteLine(user.name);
                    Console.WriteLine(user.password);

                    User sendUser = new User("Jan", "Swathi");

                    state.buffer = sendUser.Serialize();

                    handler.BeginSend(state.buffer, 0, state.buffer.Length, 0, new AsyncCallback(SendCallback), handler);
                    sendDone.WaitOne();



                    break;

                default:
                    break;
                }
            }
        }