Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Прием данных по UDP протоколу
|
|||
|---|---|---|---|
|
#18+
Приветствую как можно в каше принять данные передаваемые по UDP протоколу? Примеры с TCP попадались но вот про UDP ничего не нашел. (Cache 5.021 под Windows) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2010, 18:03 |
|
||
|
Прием данных по UDP протоколу
|
|||
|---|---|---|---|
|
#18+
gr_vlПриветствую как можно в каше принять данные передаваемые по UDP протоколу? Примеры с TCP попадались но вот про UDP ничего не нашел. (Cache 5.021 под Windows) Внутренними средствами Cache - никак. Нам пришлось написать для подобной задачи DLL-библиотеку, которая работает с сокетами. А загрузкой/выгрузкой библиотеки и получением/отправкой данных занимается процесс в Cache. (Подробности можете почитать в документации: Caché Development Guides -> Using Caché ObjectScript -> Calling Out of Caché.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2010, 08:28 |
|
||
|
Прием данных по UDP протоколу
|
|||
|---|---|---|---|
|
#18+
Может поделитесь библиотечкой с примерами использования? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2010, 09:23 |
|
||
|
Прием данных по UDP протоколу
|
|||
|---|---|---|---|
|
#18+
gr_vl, Вот примерный код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2010, 13:12 |
|
||
|
Прием данных по UDP протоколу
|
|||
|---|---|---|---|
|
#18+
А для какой системы разработки библиотека? Счас компилятор 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 Простите что наглею, но сроки очень поджимают :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2010, 15:24 |
|
||
|
Прием данных по UDP протоколу
|
|||
|---|---|---|---|
|
#18+
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-сервера по конкретному протоколу, вам она мало чем поможет. К тому же это уже коммерческая тайна... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2010, 08:12 |
|
||
|
Прием данных по UDP протоколу
|
|||
|---|---|---|---|
|
#18+
Я честно, туманно представляю как это можно сделать средствами самого Cache'. Почему не пробовать какую-то приложение классического UDP для приема данных, а потом слить их туда общедоступных средств ? В МСМ-е я знаю, что этот протокол есть для связи по DDP, а вот в Cache ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2010, 09:06 |
|
||
|
Прием данных по UDP протоколу
|
|||
|---|---|---|---|
|
#18+
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() } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2010, 13:49 |
|
||
|
Прием данных по UDP протоколу
|
|||
|---|---|---|---|
|
#18+
gr_vl, Вот говый udp сервер, он просто принимает все udp пакеты и пишет в файл, имя файла формируется в зависимости от даты, в итоге, запускай удс -сервер на нужной тебе машине, расшаривай каталог который укажеш при запуске и собирай кашой все файлы там формирумые это одно из самых простыъ и быстрых ррешений, над другими надо думать.. запускать есно так, что бы он висел в памяти всегда, через политики например ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2010, 21:46 |
|
||
|
|

start [/forum/topic.php?fid=39&fpage=45&tid=1557871]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 256ms |
| total: | 423ms |

| 0 / 0 |
