服务器没有处理请求

问题描述 投票:0回答:0

表单有一个文本框和一个按钮。通过单击按钮,将创建连接并将请求发送到服务器。服务器向客户端发送数据,客户端处理数据并返回给服务器。这是应该的,但是,当我点击按钮时,一个请求被发送到服务器并且程序“没有响应”。 服务器:

 else if(parts[0] == "minusMoney")
                    {
                        string responseMinus= Convert.ToString(card.money);
                        byte[] responseDataMinus = Encoding.UTF8.GetBytes(responseMinus);
                        stream.Write(responseDataMinus, 0, responseDataMinus.Length);
                        stream.Flush();

                        int minusMoney = Convert.ToInt32(parts[1]);
                        card.money -= minusMoney;

                    }

                    byte[] responseData = Encoding.UTF8.GetBytes(response);
                    stream.Write(responseData, 0, responseData.Length);
                    stream.Close();
                    client.Close();

客户:

private void button1_Click(object sender, EventArgs e)
        {

            
            IPAddress ip = IPAddress.Parse("127.0.0.1");
            int port = 8080;

           
            TcpClient client = new TcpClient();
            client.Connect(ip, port);

            
            NetworkStream stream = client.GetStream();
            string message = "minusMoney";

            
            byte[] data = Encoding.UTF8.GetBytes(message);
            stream.Write(data, 0, data.Length);
            stream.Flush();

            
            byte[] data1 = new byte[256];
            int bytes = stream.Read(data1, 0, data1.Length);
            message = Encoding.UTF8.GetString(data1, 0, bytes);
            int messageMoney = Convert.ToInt32(message);

           // int amount = Convert.ToInt32(textBox1.Text); 
            int result;

            if (int.TryParse(textBox1.Text, out result))
            {
                if (result <= 0)
                {
                    MessageBox.Show("Введите число, большее нуля", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else if(result > messageMoney)
                {
                    MessageBox.Show("Вы не можете снять больше, чем у вас есть", "ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else if(result >0 &&  result <= messageMoney)
                {
                    message += " " + textBox1.Text;
                    data = Encoding.UTF8.GetBytes(message);
                    stream.Write(data, 0, data.Length);
                    //DefaultForm.CardInstance.TakeOffMoney(amount);
                    //_form.MoneyLabel.Text = DefaultForm.CardInstance.Money.ToString();
                    
                    this.Hide();
                }
            }
            else
            {
                MessageBox.Show("Введите корректное число", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

我以为问题是我发消息的时候没有清流。然而事实并非如此

c# winforms client-server
© www.soinside.com 2019 - 2024. All rights reserved.