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

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

Использование UDPSocket


Страницы:   1 2

bwadmin ©   (2002-08-27 14:43:00) 

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


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

>bwAdmin

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

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

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

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

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


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

> bwAdmin

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

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


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

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


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

>bwAdmin

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


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

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

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


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

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


bwAdmin   (2002-08-29 11:08:00) [7]

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


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

> bwAdmin

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


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

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

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


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

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


Digitman   (2002-08-29 08:13:00) [11]


> also listens for requests for UDP/IP connections


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


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

> 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-28 15:12:00) [13]

>Malder

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

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

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


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

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


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

>Malder


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


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

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

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

>bwAdmin

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


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

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


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

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

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


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

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


procedure Open; virtual;

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

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


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

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 08:25:00) [20]


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


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


Страницы:   1 2

Наверх

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