Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.03.05;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.003 c
15-1458634342
Игорь Шевченко
2016-03-22 11:12
2017.03.05
Нужен совет по поводу обработки большого количества почты


2-1435261914
Drowsy
2015-06-25 22:51
2017.03.05
Какие явные признаки, что заплатка Delphi 6 Update 2 установлена?


1-1349099238
jacksotnik
2012-10-01 17:47
2017.03.05
Вопрос по ZipMaster


2-1435573097
Кузьмич
2015-06-29 13:18
2017.03.05
Кеш базы???


1-1346672822
Alexander_K
2012-09-03 15:47
2017.03.05
Печать формы на принтер