Как по socket удобно передавать строки?
От: matumba  
Дата: 12.12.06 10:44
Оценка:
Ребят, проблема — аховая, но почему-то очевидное решение не работает.
Есть сокет, есть простой протокол на строках. Нужно постоянно читать/передавать данные. Всё дело под 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. Но это некрасиво и уже как-то глупо смотрится.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.