Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];

Вниз

Использование UDPSocket   Найти похожие ветки 

 
bwadmin   (2002-08-27 14:43) [0]

Подскажите, кто имеет опыт работы с компонентом UDPSocket.
Как этот компонент заставить слушать указанный порт.
Open сделал.


 
Digitman   (2002-08-27 15:25) [1]

не знаю такого компонента, но скорее всего (если он вообще поддерживает серв.ф-ции) что-то типа метода listen


 
bwAdmin   (2002-08-27 15:51) [2]

UDPSocket - в закладке Internet. В help написано, что OPEN и все работает. Но фокус не получается. Если кто пользовал, помогите, пожалуйста.


 
Digitman   (2002-08-27 17:00) [3]

Нет таких в закладке "Internet". По кр.мере - в D5.
Есть NMUDP-компонент в закладке "FastNet", компонент реализует класс TNMUdp. Но это - класс для реализации кл.части UDP-транспорта , а не серверной. Метода Listen у него нет.
Зато Listen есть у TPowersock и у всех компонентов вида NMxxxxServ (той же вкладки) - эти компоненты могут быть использованы с большим или меньшим успехом/сложностями на серверной стороне.


 
bwAdmin   (2002-08-27 19:26) [4]

Речь идет о D6.


 
Digitman   (2002-08-28 08:25) [5]


> В help написано, что OPEN и все работает


Приведи это фрагмент хэлпа. Глубоко сомневаюсь. что Open - именно для этой цели.


 
bwAdmin   (2002-08-28 09:27) [6]

Creates the socket connection.

procedure Open; virtual;

Description

Call Open to create the socket connection. Descendents of TBaseSocket use Open to initiate the socket connection.

For client sockets, Open locates and connects to a server. For server sockets, Open opens the socket connection in a listening mode, but does not complete the connection to a client socket.


 
Digitman   (2002-08-28 09:42) [7]

Мда .. тяжко работать "вслепую")


procedure Open; virtual;

То , что метод Open - виртуальный, дает повод для некоторых подозрений. Сдается мне, что TUDPSocket - лишь базовый класс.

А каким образом ты устанавливаешь для объекта UDPSocket режим сервера ? Как ты инициализируешь этот режим перед вызовом Open ? Какие методы/св-ва явно используешь/задаешь у этого объекта ?


 
Malder   (2002-08-28 13:05) [8]

Есть NMUDP-компонент в закладке "FastNet", компонент реализует класс TNMUdp. Но это - класс для реализации кл.части UDP-транспорта , а не серверной

А где ты видел, чтобы у компонентов работающих по UDP был режим listen ??? Нафига им это надо ? Может ты не выспался ?


 
bwAdmin   (2002-08-28 13:48) [9]

Malder, ну что ж ты так.
Мне нужно наиболее дешево (просто, недорого по времени и требуемым ресурсам) реализовать передачу/получение сообщений от аппарата к аппарату при каком-либо событии. Неизвестно заранее кто сервер, а кто клиент.
Если есть какой-либо дугой лучший вариант, подскажите, пожалуйста, Уважаемые.


 
Digitman   (2002-08-28 14:10) [10]

>Malder


> А где ты видел, чтобы у компонентов работающих по UDP был
> режим listen ??? Нафига им это надо ?


А где ты увидел, что я именно о listen- режиме говорю ?
Я имел ввиду некий возможно имеющийся метод Listen(), который в некоем компоненте, пусть даже использующем UDP, вполне может и реализовывать некую спец.логику серверной стороны, совершенно иначе работающую нежели listen-логика для connection-oriеnted режима. Это вполне может быть и что-то типа эмуляции режима "прослушивания" или некоей диспетчеризации вход.сообщений.

У меня же нет D6 и мне неизвестно, что делает даже метод UDPSocket.Open (скорее всего как переопределенный вирт.метод TBaseSocket.Open), не говоря уже о наличии иных методов.

А по поводу TPowersock - да, согласен (не выспался видимо), напрасно упомянул его и соответствующих его наследников : все они используют TCP

>bwAdmin

Зачем же ты хэлп на TBaseSocket.Open привел-то ? Этот метод , скорее всего, вообще ничего не делает да и не вызывается. Ты приведи хэлп именно на TUDPSocket.Open - интересна именно его функциональность в плане утверждения, что такой метод действительно есть


 
Malder   (2002-08-28 15:02) [11]

Мне кажется, что UDPSocket это развитие TNMUDP - соответственно, никакх open не надо. Компонент сразу начинает прием сообщений


 
Digitman   (2002-08-28 15:12) [12]

>Malder

Не сходится.
TNMUDP = class(TComponent);
TUDPSocket = class(TBaseSocket); // а, может, и не напрямую

TBaseSocket же явно не ориентирован ни на TCP ни на UDP. Иначе - не вой черт делать какой-то там "безликий" Open виртуальным ?

Это так - мысли вслух) .. D6 все равно нет под рукой


 
bwadmin   (2002-08-28 22:36) [13]

> DigitMan
Зачем же ты хэлп на TBaseSocket.Open привел-то ? Этот метод , скорее всего, вообще ничего не делает да и не вызывается. Ты безусловно прав. Но такова жизнь. В help написано Derived from TBaseSocket. Но ведь факты таковы, что (опять же из help) у компонента TUdpSocket имеется свойство Active. так вот если оно True, то действительно делать Open не нужно. Но это свойство опять же из baseSocket:

Indicates whether the socket connection is open and available for communication with other machines.
property Active: Boolean;
Description
Before attempting to use or change the socket connection, read Active to determine whether the connection is open and ready. For client sockets, setting Active opens or shuts down a socket connection to another machine. For server sockets, setting Active opens or shuts down a listening connection that makes the socket available for client requests.
At design time, set Active to True to make the socket open a connection when the application starts running (the default value is False). At runtime, use the Open or Close method to open or close the connection.

Но дело все в том, что указав порты и хосты, ничего не "слушается".

Привожу Help на указанный компонент:
TUdpSocket is the UDP component
Unit Sockets
Description
Use TUdpSocket to create UDP-based applications. Add a TUdpSocket object to a form or data module to turn an application into a UDP/IP client and server. TUdpSocket specifies a desired connection to a UDP/IP server, manages the connection when it is open, and terminates the connection when the application is through. It also listens for requests for UDP/IP connections from other machines and establishes connections when requests are received.


 
Digitman   (2002-08-29 08:13) [14]


> also listens for requests for UDP/IP connections


Это значит, что после выполнения Open гнездо, созданное объектом UDPSocket, готово к приему (и передаче) сообщений. И не более того. Если угодно, можно интерпретировать это самое "also listens" как некое "прослушивание".


 
bwAdmin   (2002-08-29 09:05) [15]

А как же заставить реально "сушать"? Нет у меня с такими делами ну никакого опыта. Ну подскажите, плиз.


 
Digitman   (2002-08-29 09:33) [16]

Реально "слушать" может лишь TCP-гнездо. Ты же делаешь упор именно на UDP-гнездо.

Тогда обоснуй выбор именно UDP-гнезда.


 
Slava   (2002-08-29 09:57) [17]

> bwAdmin

Посмотри вот это как вариант:
c:\Program Files\Borland\Delphi6\Demos\Indy\UPDClientServer


 
bwAdmin   (2002-08-29 11:08) [18]

Обосновываю:
Мне нужно наиболее дешево (просто, недорого по времени и требуемым ресурсам) реализовать передачу/получение сообщений от аппарата к аппарату при каком-либо событии. Неизвестно заранее кто сервер, а кто клиент.
Если есть какой-либо дугой лучший вариант, подскажите, пожалуйста, Уважаемые.


 
bwAdmin   (2002-08-29 11:41) [19]

Slava у меня такого демоса нет.
Но с Indy как-то не хочется. Уж очень дорого при сменен версии Indy разбираться что они куда перенесли, какие юниты переименовали.


 
bwAdmin   (2002-08-29 12:00) [20]

Попробовал использовать NMUDP - в принципе устраивает. Как отправляет так и слушает без видимых пока проблем.
Спасибо.

Может есть еще какие-либо возможности?


 
Digitman   (2002-08-29 12:16) [21]

>bwAdmin

При такой постановке задачи вообще нет смысла говорить о "сервере" и "клиенте". И уж тем более о том, что кто-то кого-то должен "слушать". Есть просто "источник" и "приемник" сообщения. В любой момент времени первому достаточно знать координаты приемника (адрес, порт) и "уметь" отправлять сообщение, второму - быть "привязанным" к этим координатам и "уметь" принимать сообщение.


 
bwAdmin   (2002-08-29 13:10) [22]

Есть просто "источник" и "приемник" сообщения.
Вот вот. именно так.
Ну так что можно еще в этом случае посоветовать использовать.


 
Slava   (2002-08-29 13:22) [23]

> bwAdmin

С Indy не хочется, а с NM хочется?

Первое хотя бы с исходниками


 
Digitman   (2002-08-29 13:58) [24]

>bwAdmin

Посоветовать что-либо можно лишь при конкретной постановке задачи.

То что ты пишешь

>>реализовать передачу/получение сообщений от аппарата к аппарату

это - на "деревню дедушке" называется, а не постановка задачи и уж тем более - не исх.данные ...

ставь задачу и ее условия максимально подробно, а не "на пальцах" - будет тебе и рекомендация



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.01 c
1-101239
Граф
2002-10-21 22:15
2002.10.31
совсем немного вроде осталось, и - на тебе...


3-101147
LeS
2002-10-09 10:47
2002.10.31
Сохранить текст хранимой процедуры в txt из StoredProc


1-101340
bobby
2002-10-19 14:11
2002.10.31
toolobar как в ворде


1-101274
Gari
2002-10-22 14:27
2002.10.31
Работа с ActiveX


6-101414
Malder
2002-08-29 18:45
2002.10.31
Как послать пактеты именно по данному интерфейсу ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский