Блог им. SHLAK

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

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


  • Ключевые слова:
  • Transaq
632 | ★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:
Фото
Встречаемся на Smart-Lab & Cbonds PRO облигации 2026
Встречаемся на Smart-Lab & Cbonds PRO облигации 2026 💼 Уже в эту субботу, 28 февраля , в Москве пройдёт конференция по вопросам...
Фото
Портфель с ежемесячными поступлениями. Февраль 2026
В сентябре прошлого года сформировали портфель облигаций с ежемесячными купонами. Посмотрим, как изменилась ситуация на рынке, и актуализируем...
Займер спас от мошенников почти миллиард рублей
🥷 За прошлый год служба безопасности Займера выявила и заблокировала более 165 тысяч заявок на займы от мошенников, что помогло компании...
Фото
Какие юаневые облигации можно приобрести на фоне ужесточения бюджетного правила?

теги блога Boris Litvinov

....все тэги



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