powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / UTL_TCP
5 сообщений из 5, страница 1 из 1
UTL_TCP
    #32029369
SAA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто-нибудь использовал модуль UTL_TCP? У меня каждый раз творятся чудеса. У меня стоит Oracle9i (скаченный с сайта Oracle, знаю, что там не идеальный вариант, но все-таки рабочий!?) на SlackWare 8.0.
Вначале решил использовать переменную в пакедже для хранения идентификатора TCP соединения. Все процедурки и функции использовали ее и были счастливы. После перезагрузки сервера работающий ранее код на PL/SQL кричал: NOT CONNECTED TO NETWORK и переменная оказалась пустой.
При использовании замечательной функции SYS.UTL_TCP.WRITE_LINE(<connection>, <data&gt на сервере написанном на Delfi возникало событие вовсе не OnClientRead, а onClientWrite и Socket.ReceivedText содержал-таки переданный пакет. После все той же перезагрузки Oracle9i на TCP сервере после посылки пакета возникало-таки событие OnClientRead, но Socket.ReceivedText ничего в себе не содержало. Обидно, но почитав внимательно описание SYS.UTL_TCP накопал процедуру SYS.UTL_TCP.FLUSH(connection). После этого пакет успешно отправлялся Oracle9i на TCP сервер.
Вопрос в том, что такая непредсказуемость абсолютно не желательна, потому как будущий продукт, постоенный на UTL_TCP представляет большую важность заведению, где я работаю . Да, сейчас мы на тестовой платформе настроим эти вещи, но есть ли гарантия, что там не откроются еще какие-либо глюки? Помогите разобраться.
...
Рейтинг: 0 / 0
UTL_TCP
    #32029493
vskv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Месье SAA_!
По-моему, все ваши проблемы в недопонимании того, как работать с сокетами вообще, и UTL_TCP с Delphi в частности.
Почему не испрользовать pull технологию, когда программа на Delphi забирает данные с сервера, а не сервер пытается их активно "впихнуть" (push) клиенту. Отметим сразу же, что использование UTL_TCP поверх неустойчивых линков (в частности, между сегментами разделёнными не слишком (или чересчур слишком ) интелектуальным файерволом) крайне не рекомендуется.
...
Рейтинг: 0 / 0
UTL_TCP
    #32029501
SAA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суть проблемы очень ясна. Нужно мне TCP соединение и все тут, хоть убей.
На самом деле пакет описан, но вот после очередной загрузки проблемы не повторялись. Разве что пакеты не отправлялись сразу, но и это оказалось разрешимым.

SYS.UTL_TCP.OPEN_CONNECTION - открытие TCP соединения
SYS.UTL_TCP.WRITE_LINE - запись данных в TCP соединение
SYS.UTL_TCP.FLUSH - отправка буферированных данных TCP соединения
SYS.UTL_TCP.AVAILABLE - проверка пришедших данных с TCP соединения
SYS.UTL_TCP.READ_LINE - чтение данных из TCP соединения
SYS.UTL_TCP.CLOSE_CONNECTION - закрытие TCP соединения

Вот и были мы сильно удевлены тем, что Delfi странно реагирует на пришедшие пакеты, отосланные при помощи UTL_TCP. Склонен думать, что это связано с FLUSH (его я вначале не делал, а при закрытии соединения сие чудо скорее всего вызывалось).
На данный момент глюков нет, а мой опыт можно использовать в своих личных изысканиях в этой области.

Кстати, этим соединениям абсолютно наплевать на то, что соединение не отзывается по тайм-ауту и фаервол не способен его обрубить, как скажем, это происходит с соединениями Oracle. Интересно, а можно ли Oracle Net Client & Server научить не закрывать соединение при кратковременном обрыве связи?
...
Рейтинг: 0 / 0
UTL_TCP
    #32029603
vskv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Месье SAA_!

Учите матчасть -- в RFC по TCP очень хорошо описано,
при каких условиях соединение должно закрываться аварийно:
"падение интерфейса" (да и то не всегда), "получение пакета с левым SYN",
"получение пакета, требуещего сброса соединения" (reset) и
"неполучение пакета в течении условного тайм-аута,
но только при условии, что мы этот пакет ждём".
Таким образом, соединение спокойно переживает падение ISP на 10 минут,
если данные по нему не бегают, и не переживает перетыкание проводов из
одной дырки хаба в другую.

ЗЫ. Шифрующий (crypto) или транслирующий (маскарад, NAT) файервол, после перезагрузки обычно не может вспомнить какой был номер у последнего пакета, что приводит к сбросу всех соединений вообще. С обычным рутером или файерволом (т.е. только фильтр пакетов по определённым правилам) после перезагрузки оного все транзитные соединения, как правило,
остаются живыми.
...
Рейтинг: 0 / 0
UTL_TCP
    #32029674
SAA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RFC и TCP это конечно хорошо... а что про модуль UTL_TCP?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / UTL_TCP
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]