и привет всем участникам.Я работаю над небольшим встроенным оборудованием для сбора данных, которое периодически собирает данные и запускает небольшой встроенный веб-сервер.При запросе сервер отвечает очень простой HTML-страницей, а также собранными данными в 128-байтовых кусках TCP.Размер передаваемых данных не более 64К.
Встроенный стек TCP / IP довольно тонкий, а MCU не самый быстрый, поэтому я бы хотел, чтобы приложение-запросчик имело индикатор прогресса (индикатор выполнения или аналогичный).Поскольку длина передаваемого массива данных постоянно меняется, сервер должен вставить фактическую длину данных в начало массива данных.Запрашивающее приложение должно прочитать эту информацию о длине и обновить ход выполнения.С помощью следующего кода я могу получать содержимое сервера, но могу получить доступ к данным только после завершения передачи:
TcpClient msnTcpConn = new TcpClient();
try
{
msnTcpConn.Connect(HostName, 80);
if (msnTcpConn.Connected)
{
string msg = "";
NetworkStream netStream = msnTcpConn.GetStream();
System.IO.StreamWriter sw = new System.IO.StreamWriter(netStream);
System.IO.StreamReader sr = new System.IO.StreamReader(netStream);
string req = "";
req += "GET / HTTP/1.0\r\n";
req += "Host: " + HostName + "\r\n";
req += "\r\n";
sw.Write(req);
sw.Flush();
numa = 0;
peek = 0;
while (sr.Peek()>=0)
{
peek = sr.Peek();
numa++;
textBox1.Text = Convert.ToString(numa);
msg += sr.ReadLine();;
}
webBrowser1.DocumentText = msg;
msnTcpConn.Close();
}
else
{
MessageBox.Show("Not connected.");
}
}
catch (UriFormatException UriExc)
{
MessageBox.Show("Error!");
}
В приведенном выше коде textBox1 не обновляется в цикле while, только когда циклвышел.Таким образом, я не могу вовремя проверить полученные данные, чтобы извлечь размер данных, необходимый для обновления индикатора прогресса.Я новичок в сети .NET, так что, возможно, есть лучший способ сделать это, так что любой совет или помощь будут с благодарностью.Спасибо.