Блог им. SHLAK

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

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


  • Ключевые слова:
  • Transaq
633 | ★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:
Фото
Высокие ставки прошли пик давления, но кредитный отбор стал жестче
По оценке аналитиков Газпромбанка, 2025 год стал периодом ухудшения кредитного профиля некоторых российских корпоративных заемщиков, хотя...
На Луну за ИИ
65 лет назад, 12 апреля, первый полет человека в космос открыл человечеству путь к звездам. Сегодня эта дата обретает новый «промышленный» смысл,...
Кому «улыбается» кривая цен на нефть?
Инвестиционный консультант ВТБ Мои Инвестиции Никита Мурлейкин В 2026 году рынок нефти живет в режиме умеренной бэквордации: основная...

теги блога Boris Litvinov

....все тэги



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