Форум: "Сети";
Текущий архив: 2017.03.05;
Скачать: [xml.tar.bz2];
ВнизConnected = False, а передача данных происходит !? Найти похожие ветки
← →
Alik (2010-08-30 12:56) [0]Добрый день,
Не могу понять в чем тут дело - я осуществляю TcpClient.Connect, после которого свойство Connected = False, но передача данных в обе стороны идет.
Работаю в неблокирующем режиме.
На другом конце стоит Линукс. Канал связи - интернет.
← →
Anatoly Podgoretsky © (2010-08-30 13:46) [1]> Alik (30.08.2010 12:56:00) [0]
Ты справку то читаешь или нет?
To close a socket, use the Close method.
← →
Alik (2010-08-30 14:14) [2]Наверное я так не сформулировал проблему:
Мне нужно подключиться к серверу и после того как св-во TCPCLient.Connected установится в True, я по идее смогу обмениваться данными.
В реальности, после запуска метода Connect, св-во Connected остается в значении False, я "закрываю глаза" на это дело и в наглую передаю и получаю информацию.
По какой причине такое расхождение?
← →
Alik (2010-08-30 14:15) [3]Наверное я не так не сформулировал проблему:
Мне нужно подключиться к серверу и после того как св-во TCPCLient.Connected установится в True, я по идее смогу обмениваться данными.
В реальности, после запуска метода Connect, св-во Connected остается в значении False, я "закрываю глаза" на это дело и в наглую передаю и получаю информацию.
По какой причине такое расхождение?
← →
Alik (2010-08-30 14:15) [4]Сорри!
Наверное я не так сформулировал проблему:
Мне нужно подключиться к серверу и после того как св-во TCPCLient.Connected установится в True, я по идее смогу обмениваться данными.
В реальности, после запуска метода Connect, св-во Connected остается в значении False, я "закрываю глаза" на это дело и в наглую передаю и получаю информацию.
По какой причине такое расхождение?
← →
Медвежонок Пятачок © (2010-08-30 15:05) [5]видимо потому что коннект - это асинхронный метод
← →
Сергей М. © (2010-08-30 15:12) [6]
> св-во Connected остается в значении False, я "закрываю глаза"
> на это дело и в наглую передаю и получаю информацию
А вот наглеть в асинхронном неблок.режиме нельзя.
Рано или поздно наглость будет наказана неработоспособностью программы в "боевых" условиях.
Прием или передача должны начинаться не позже установки флага WriteReady при сброшенном флаге ExceptFlag. Флаги устанавливает и сбрасывает метод Select
← →
Alik (2010-08-30 15:56) [7]
> Сергей М. © (30.08.10 15:12) [6]
Спасибо!
Делаю так:
with TcpPort, Client do begin
Active := True;
Select(@ReadReady, @WriteReady, @ExceptFlag, TimeOut);
// ReadReady - Ïîðò îòêðûò äëÿ ÷òåíèÿ
// WriteReady - Ïîðò îòêðûò äëÿ çàïèñè
// ExceptFlag - Ïîðò íåäîñòóïåí
if ExceptFlag then //Åñëè ïîðò îòêðûò
begin
Active := False;
OutErrorMessage(F_Radar.Handle, errorSERVER_CONNECTION, False);
Exit;
end;
end;
Сейчас все контролируется, единственное что еще для меня не ясно как собирать файл большого размера, если он передается по кусочкам?
Нужно тупо следить за количеством принятых байт в событии OnReceive или не все так просто?
← →
Сергей М. © (2010-08-30 16:03) [8]Проще некуда.
На то OnReceive и предназначено.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2017.03.05;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.002 c