powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Прием данных по UDP протоколу
10 сообщений из 10, страница 1 из 1
Прием данных по UDP протоколу
    #37010010
gr_vl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую
как можно в каше принять данные передаваемые по UDP протоколу?
Примеры с TCP попадались но вот про UDP ничего не нашел. (Cache 5.021 под Windows)
...
Рейтинг: 0 / 0
Прием данных по UDP протоколу
    #37010536
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gr_vlПриветствую
как можно в каше принять данные передаваемые по UDP протоколу?
Примеры с TCP попадались но вот про UDP ничего не нашел. (Cache 5.021 под Windows)
Внутренними средствами Cache - никак. Нам пришлось написать для подобной задачи DLL-библиотеку, которая работает с сокетами. А загрузкой/выгрузкой библиотеки и получением/отправкой данных занимается процесс в Cache.
(Подробности можете почитать в документации: Caché Development Guides -> Using Caché ObjectScript -> Calling Out of Caché.)
...
Рейтинг: 0 / 0
Прием данных по UDP протоколу
    #37010608
gr_vl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может поделитесь библиотечкой с примерами использования?
...
Рейтинг: 0 / 0
Прием данных по UDP протоколу
    #37011218
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gr_vl,
Вот примерный код.
...
Рейтинг: 0 / 0
Прием данных по UDP протоколу
    #37011630
gr_vl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А для какой системы разработки библиотека?

Счас компилятор CodeGear c++2007 матерится на::
[BCC32 Error] udpdll.cpp(150): E2268 Call to undefined function 'push'
[BCC32 Error] udpdll.cpp(214): E2268 Call to undefined function 'pop'

Если вы делали для Cache 5.021 може поделитесь готовой dll
Простите что наглею, но сроки очень поджимают :)
...
Рейтинг: 0 / 0
Прием данных по UDP протоколу
    #37012615
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gr_vlА для какой системы разработки библиотека?

Счас компилятор CodeGear c++2007 матерится на::
[BCC32 Error] udpdll.cpp(150): E2268 Call to undefined function 'push'
[BCC32 Error] udpdll.cpp(214): E2268 Call to undefined function 'pop'

Если вы делали для Cache 5.021 може поделитесь готовой dll
Простите что наглею, но сроки очень поджимают :)
1. Я в комментариях перед вызовами push/pop написал, что это псевдокод. Реализация обработки очереди входящих пакетов не входит в пример работы UDP и Cache.
2. Лучше компилировать через Visual C++ (форматы DLL-библиотек у Borland и Microsoft отличаются).
3. "Готовая dll" - это реализация UDP-сервера по конкретному протоколу, вам она мало чем поможет. К тому же это уже коммерческая тайна...
...
Рейтинг: 0 / 0
Прием данных по UDP протоколу
    #37012657
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я честно, туманно представляю как это можно сделать средствами
самого Cache'. Почему не пробовать какую-то приложение классического
UDP для приема данных, а потом слить их туда общедоступных средств ?
В МСМ-е я знаю, что этот протокол есть для связи по DDP, а вот в Cache ...
...
Рейтинг: 0 / 0
Прием данных по UDP протоколу
    #37013377
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gr_vl ,

Жаль, что у Вас старая версия СУБД.

В последних версиях Caché кроме CallOut ещё удобно использовать Java или .NET, например ( ссылка на оригинал):
Пример серверной части для работы с UDPClass SqlRu.Test Extends %RegisteredObject [ Abstract ]
{

ClassMethod UDPReceive(
  host As %String = "127.0.0.1",
  port As %Integer = {$$$JDBCGatewayPort}) 
{
  #dim exception As %Exception.StatusException
    
  set N=2048
  set UDPPort=8090
    
  // Create a buffer to read datagrams into.
  // If a packet is larger than this buffer, the excess will simply be discarded!
  set buffer=##class(%GlobalBinaryStream).%New()
  for i=1:1:N  do buffer.Write(" ")
    
  try {
    #dim gateway As %Net.Remote.Gateway=##class(%Net.Remote.Gateway).%New()
    
    $$$ThrowOnError(gateway.%Connect(host,port))
    
    // Create a socket to listen on the port.
    #dim udp As java.net.DatagramSocket=##class(java.net.DatagramSocket).%New(gateway,UDPPort)
    
    // Create a packet to receive data into the buffer
    #dim packet As java.net.DatagramPacket=##class(java.net.DatagramPacket).%New(gateway,buffer,N)
    

    // Now loop forever, waiting to receive packets and printing them.
    while(1) {
    
      // Wait to receive a datagram
      do udp.receive(.packet)
    
      // Convert the contents to a string, and display them
      set str=packet.getData().Read(packet.getLength())
      w str,!
    
      q:str="exit"
    }
    
  } catch exception {
    write $system.Status.GetErrorText(exception.AsStatus(),"ru")
  }
  do:$IsObject(udp) udp.close()
  do:$IsObject(gateway) gateway.%Disconnect()
}
}
Клиентскую часть сделал на Java и на Delphi - работают великолепно.
...
Рейтинг: 0 / 0
Прием данных по UDP протоколу
    #37017064
Onix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gr_vl,

Вот говый udp сервер, он просто принимает все udp пакеты и пишет в файл,
имя файла формируется в зависимости от даты,
в итоге, запускай удс -сервер на нужной тебе машине, расшаривай каталог который укажеш при запуске и собирай кашой все файлы там формирумые
это одно из самых простыъ и быстрых ррешений, над другими надо думать..
запускать есно так, что бы он висел в памяти всегда, через политики например
...
Рейтинг: 0 / 0
Прием данных по UDP протоколу
    #37017065
Onix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Onix,

сорри,файл выскочил..
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Прием данных по UDP протоколу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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