Ваш код содержит много ... шума.Вам это не нужно.
Причиной 100% загрузки процессора является то, что вы ожидаете получения данных.Вам не нужно это делать.Read
будет блокироваться, пока данные не будут доступны.Вам также не нужно заново создавать NetworkStream
для каждого получаемого фрагмента данных.
Ваш код может быть значительно упрощен, если вы используете StreamReader :
using (var reader = new StreamReader(new NetworkStream(socket))
{
char[] buffer = new char[512];
int received;
while ((received = reader.Read(buffer, 0, buffer.Length)) > 0)
{
string s = new string(buffer, 0, received);
Console.WriteLine(s);
}
}
Read
блок, пока данные не станут доступными.Код зацикливается, пока соединение живо.Вы можете еще больше упростить код, если будете использовать ReadLine вместо чтения в буфер символов.
Если вы не хотите блокировать поток до тех пор, пока данные не станут доступны, посмотрите на асинхронное чтение.