Показать сообщение отдельно
Старый 27.11.2015, 01:18   #14
DStalk
Разработчик
 
Аватар для DStalk
 
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений
(для 1,072 пользователей)
Ответ: Сетевое программирование

Товарищи, подскажите: имеется простенький клиент. В цикле вызывается readSocket(), для проверки доступных данных для чтения используется NetworkStream.DataAvailable. Читать данные удобнее именно строками, но для этих целей явно не подходит DataAvailable - иногда данные "висят" до следующей строки (одна строчка прочиталась из потока, DataAvailable сбросилось, следующая строка не читается пока новая не придет).
Гуглил, но решения именно с ReadLine() не нашел, может кто подскажет как по другому сделать проверку на пришедшие данные?

tcp_socket = new TcpClient(hostport);
            
net_stream tcp_socket.GetStream();
socket_writer = new StreamWriter(net_stream);
socket_reader = new StreamReader(net_stream);

static public 
Boolean readSocket()
{
    if (
net_stream.DataAvailable) {
        
tcp_packet socket_reader.ReadLine();
        
//Тут обработка
        
return true;
    }
    return 
false;

__________________
galaxies.su | dstalk.ru
(Offline)
 
Ответить с цитированием