Форум: "Сети";
Текущий архив: 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