private void listening_thread()
        {
            while (true)
            {
                Byte[] arr_data = new Byte[BUFSIZ];
                Dictionary <String, String> dict;
                try
                {
                    server_socket.Receive(arr_data);
                }
                catch (SocketException)
                {
                    MessageBoxBase.Show("服务器掉线了!");
                    Application.Exit();
                }
                try
                {
                    dict = DataEncoding.get_dictionary(arr_data);
                }
                catch (DataEncodingException e)
                {
                    MessageBoxBase.Show(e.Message);
                    Application.Exit();
                    break;
                }
                switch (dict["identifier"])
                {
                default:
                    throw new DataEncodingException("Invalid identifier.");

                case "lobby_ready":
                    check_ready_request(dict);
                    break;

                case "lobby_chessmove":
                    check_chessmove_request(dict);
                    break;

                case "lobby_gamestart":
                    check_gamestart_request(dict);
                    break;

                case "lobby_draw":
                    check_draw_request(dict);
                    break;

                case "lobby_gameend":
                    check_gameend_request(dict);
                    break;

                case "lobby_exit":
                    MessageBoxBase.Show("你的对手已经退出了房间. 即将关闭房间.",
                                        "对手退出房间");
                    this.Close();
                    break;
                }
            }
        }
        private void check_draw_request(Dictionary <String, String> dict)
        {
            String message = dict["message"];

            switch (message)
            {
            // TODO
            case "draw":
                MessageBoxBase.Show("对方提和, 请问您是否接受?");
                break;
            }
        }
        private void button_draw_Click(object sender, EventArgs e)
        {
            MessageBoxBase.Show("敬请期待求和功能.");

            /*
             * server_socket.Send(new Dictionary<String, String>()
             * {
             *  ["identifier"] = "lobby_draw",
             *  ["message"] = "draw"
             * });
             * button_draw.Enabled = false;
             */
        }