Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизidTcpServer/idTcpClient Найти похожие ветки
← →
stas © (2010-05-14 10:03) [0]Подскажите пожалуйста каким образом получить клиенту ответ от сервера
отправляю по кнопке поток
...client.WriteStream(s);
Сервер его получает и обрабатывает, потом отправляет ответ
AThread.Connection.WriteStream(s);
вопрос в том как на клиенте его получить и обработать?
← →
Медвежонок Пятачок © (2010-05-14 10:15) [1]Ну сделал райт, теперь делай рид.
← →
stas © (2010-05-14 10:35) [2]я делаю в том же обработчике т.е.
client.ReadStream(s);
И он зависает.
Уже пробовал D7 c родными Indy и D 2009. Тоже самое (
← →
Медвежонок Пятачок © (2010-05-14 10:46) [3]не зависает, а ждет.
длина стрима тебе неизвестна.
поэтому клиент должен читать либо до дисконнекта (если прикладной протокол типа http) либо до наступления таймаута
← →
stas © (2010-05-14 11:56) [4]ставлю и размер и timeout если timeout, то через это время пишет ReadTimeout.
И если пишу так
client.WriteStream(s);
client.ReadStream(s1,280);
то и несрабатывает событие получения данных у сервера.
← →
Медвежонок Пятачок © (2010-05-14 12:20) [5]1. Откуда ты узнал размер стрима? Сервер его передал и ты считал этот размер? Откуда 280 байт?
2. то через это время пишет ReadTimeout.
Все верно. Получено столько данных, сколько получено.
Затем данные кончились и наступил таймаут при котором сгенерировалось исключение.
Обрабатывай его и получай свои данные. Они в стиме лежат.
← →
stas © (2010-05-14 12:40) [6]Медвежонок Пятачок © (14.05.10 12:20) [5]
Спасибо за помощь, я переделал на ReadBuffer и работает.
Размер известный, это переменная типа record.
← →
Anatoly Podgoretsky © (2010-05-14 12:52) [7]> stas (14.05.2010 11:56:04) [4]
Данные не посылаются на слушающий сокет, вот и таймаут
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.067 c