Блог им. SHLAK

С# пример TRANSAQ Connector, есть на сайте ФИНАМА

Друзья есть ли пример у кого нибудь на С++
С# пример  TRANSAQ Connector, есть на сайте ФИНАМА


  • Ключевые слова:
  • Transaq
631 | ★1
4 комментария
#include <windows.h>
#include <iostream>
#include <fstream>


#define TACCESS_API  __declspec(dllimport)
typedef bool (WINAPI *tcallback)(BYTE* pData);
typedef BYTE* (WINAPI *typeSendCommand)(BYTE* pData);
typedef bool (WINAPI  *typeFreeMemory)(BYTE* pData);
typedef bool (WINAPI *typeSetCallback)(tcallback pCallback);


std::ofstream xmlfile;
typeFreeMemory FreeMemory;


bool CALLBACK acceptor(BYTE *pData)
{
    xmlfile<<pData<<std::endl;
    FreeMemory(pData);
    return true;
}

int main(int argc, char* argv[]) {

    setlocale(LC_CTYPE, "");

    std::cout<<«Statring!»<<std::endl;
    xmlfile.open(«test.xml»);
    xmlfile<<"<?xml version='1.0' encoding='UTF-8'?>";
    xmlfile<<"<root>";

    HMODULE hm = LoadLibrary(«Debug\\txmlconnector.dll»);
    if (hm) {
        typeSetCallback SetCallback =
            reinterpret_cast<typeSetCallback>(GetProcAddress(hm, «SetCallback»));

        FreeMemory =
            reinterpret_cast<typeFreeMemory>(GetProcAddress(hm, «FreeMemory»));

        SetCallback(acceptor);
    

        typeSendCommand SendCommand =
            reinterpret_cast<typeSendCommand>(GetProcAddress(hm,«SendCommand»));
        if (!SendCommand)    {
            printf("\«SendCommand\» not found (0x%X)\n", GetLastError());
            return -1;
        }
        else {
            BYTE* ss = SendCommand(reinterpret_cast<BYTE*>(
                "<command id='connect'>"
                "<login>KOKS</login><password>koks</password>"
                "<host>192.168.15.15</host><port>3901</port>"
                "<logsdir>.\\LOGS\\</logsdir><loglevel>0</loglevel></command>"));
            std::cout<<reinterpret_cast<const char*>(ss);
            FreeMemory(ss);

            Sleep(10000);

            ss = SendCommand(reinterpret_cast<BYTE*>("<command id='subscribe'>"
                "<alltrades><secid>304</secid></alltrades>"  //идентификаторы взял просто для примера
                "<quotations><secid>304</secid></quotations>" //в реально кода надо ориентировать на то,
                "<quotes><secid>304</secid></quotes>" //что присылвает сервер
                "</command>"));
            std::cout<<reinterpret_cast<const char*>(ss);
            FreeMemory(ss);

            Sleep(1000);

            ss = SendCommand(reinterpret_cast<BYTE*>(
                    "<command id='disconnect'/>"));
                std::cout<<reinterpret_cast<char*>(ss);
            FreeMemory(ss);
        }
    
        try {
            FreeLibrary(hm);
        }
        catch (...) {
            std::cout<<«Fail in FreeLibrary»;
        }
    }
    int err = GetLastError();
    xmlfile<<"</root>";

    std::cout<<"\nEnded...\n";
    char c;
    std::cin>>c;
    return 0;
}
avatar
Естли будут вопросы обращайся!!!
avatar

Читайте на SMART-LAB:
Фото
Кто покупает золото и когда оно закончится в недрах Земли
Доля промышленности в совокупном спросе на золото всего 6% — в этом его основное отличие от других сырьевых товаров. Большая часть остального...
🔍Тенденции на рынке жилья и ипотеки в России — 2025—2026
Аналитический центр ДОМ.РФ подвел итоги жилищной сферы в 2025 году и дал прогноз на 2026-ой. ❓Каким был 2025 г. 1. Выросла доля сделок...
Фото
🌍 Техподдержка мирового уровня от SOFL: большой проект для «Лаборатории Касперского»
Друзья, в этом посте делимся подробностями по крупному сервисному проекту с международной ИБ-компанией. Аутсорсинг центр «Софтлайн Коннект»...
Фото
РУСАГРО: выкупить акции и спасти Мошковича - могут ли акции вырасти на 100% от текущих ценах, подробный разбор 
Начинаем покрытие компании РУСАГРО этим постом, надеюсь удастся под микроскопом разглядеть инвестиционную привлекательность или хотя бы сделать...

теги блога Boris Litvinov

....все тэги



UPDONW
Новый дизайн