Ребят, проблема — аховая, но почему-то очевидное решение не работает.
Есть сокет, есть простой протокол на строках. Нужно постоянно читать/передавать данные. Всё дело под C# 2.0.
Сначала попробовал сделать так:
Socket cli = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
cli.connect ....
NetworkStream NetStrm = new NetworkStream(cli, true);
StreamWriter wr = new StreamWriter(NetStrm);
wr.AutoFlush = true;
StreamReader rdr = new StreamReader(NetStrm);
Но любое чтение из rdr зависает в ожидании, хотя вторая сторона явно послала данные. (в данном случае это код клиента, но сервер почти такой же)
Вопрос: эта связка ридеров-вритеров в принципе не работает или я какой-нибудь долбаный флажок забыл?
PS
Одно время решал вопрос так: создавал ридер, а вместо вритера разлагал строку на байты и слал обычным Socket.Send. Но это некрасиво и уже как-то глупо смотрится.