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; } } }