Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Connected = False, а передача данных происходит !? [WinXP]


Alik ©   (2010-08-30 12:56:00) 

Добрый день,

Не могу понять в чем тут дело - я осуществляю TcpClient.Connect, после которого свойство Connected = False, но передача данных в обе стороны идет.
Работаю в неблокирующем режиме.
На другом конце стоит Линукс. Канал связи - интернет.


Сергей М.   (2010-08-30 16:03:00) [1]

Проще некуда.
На то OnReceive и предназначено.


Alik   (2010-08-30 15:56:00) [2]


> Сергей М. ©   (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 15:12:00) [3]


> св-во Connected остается в значении False, я "закрываю глаза"
> на это дело и в наглую передаю и получаю информацию


А вот наглеть в асинхронном неблок.режиме нельзя.
Рано или поздно наглость будет наказана неработоспособностью программы в "боевых" условиях.
Прием или передача должны начинаться не позже установки флага WriteReady при сброшенном флаге ExceptFlag. Флаги устанавливает  и сбрасывает метод Select


Медвежонок Пятачок   (2010-08-30 15:05:00) [4]

видимо потому что коннект - это асинхронный метод


Alik   (2010-08-30 14:15:00) [5]

Наверное я нетак не сформулировал проблему:
Мне нужно подключиться к серверу и после того как св-во TCPCLient.Connected установится в True, я по идее смогу обмениваться данными.

В реальности, после запуска метода Connect, св-во Connected остается в значении False, я "закрываю глаза" на это дело и в наглую передаю и получаю информацию.

По какой причине такое расхождение?


Alik   (2010-08-30 14:15:00) [6]

Сорри!

Наверное я не так сформулировал проблему:
Мне нужно подключиться к серверу и после того как св-во TCPCLient.Connected установится в True, я по идее смогу обмениваться данными.

В реальности, после запуска метода Connect, св-во Connected остается в значении False, я "закрываю глаза" на это дело и в наглую передаю и получаю информацию.

По какой причине такое расхождение?


Alik   (2010-08-30 14:14:00) [7]

Наверное я так не сформулировал проблему:
Мне нужно подключиться к серверу и после того как св-во TCPCLient.Connected установится в True, я по идее смогу обмениваться данными.

В реальности, после запуска метода Connect, св-во Connected остается в значении False, я "закрываю глаза" на это дело и в наглую передаю и получаю информацию.

По какой причине такое расхождение?


Anatoly Podgoretsky   (2010-08-30 13:46:00) [8]

> Alik  (30.08.2010 12:56:00)  [0]

Ты справку то читаешь или нет?

To close a socket, use the Close method.


Наверх

Титульная страница Поиск, карта сайта Написать письмо