表单有一个文本框和一个按钮。通过单击按钮,将创建连接并将请求发送到服务器。服务器向客户端发送数据,客户端处理数据并返回给服务器。这是应该的,但是,当我点击按钮时,一个请求被发送到服务器并且程序“没有响应”。 服务器:
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);
}
我以为问题是我发消息的时候没有清流。然而事实并非如此