CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - ØMQ używał ktoś ???

ØMQ używał ktoś ???

problemy z tworzeniem programów do obsługi sieci, internetu, e-mail itp..

ØMQ używał ktoś ???

Nowy postprzez Corvis » czwartek, 5 maja 2011, 21:25

Witam,

Z góry piszę, że moje doświadczenie w aplikacjach sieciowych jest ZEROWE.

Moja koncepcja jest taka. Mam platformę opartą na MT4. Muszę napisać skrypt serwera TCP IP który będzie wysyłał mi określone dane.
Napiszę też 2 program w C++ Builder który te dane będzie nasłuchiwał i odpowiednio je obrabiał po odebraniu.
Znalazłem bibliotekę której chce użyć do napisania serwera który będzie wysłał dane po TCP IP.

http://zguide.zeromq.org/
http://api.zeromq.org/2-1:_start

Problem mam taki, że próbuję dojść ładu z tą biblioteką. Używał ktoś już tego ?? Może ma ktoś napisany jakiś skrypt serwera ??

Pozdrawiam i z góry dzięki za odpowiedzi.

EDIT: Napisałem kawałek skryptu który się niby kompiluje ale nie mogę złapać tego w swoim programie w Builderze

KOD cpp:     UKRYJ  
#include <zmq_bind.mqh>
 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int client,server,context;
int init()
{
  Print("using zeromq version "+z_version_string());
  context = z_init(1);
  client = z_socket(context,ZMQ_REQ);
  Print(client);
  z_bind(client,"tcp://127.0.0.1:9090");
 
  return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+

int deinit()
{
  z_close(client);
  z_term(context);
 
 
  return(0);
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+

int start()
{
  z_send(client,"TEST");  
  return(0);
}
//+------------------------------------------------------------------+
 


Niech mi ktoś powie, czy program builderowski który będzie zbierał dane z platform będzie SERWEREM nasłuchującym a platforma klientem wysyłającym dane ???? czy odwrotnie.
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: ØMQ używał ktoś ???

Nowy postprzez Cyfrowy Baron » piątek, 6 maja 2011, 09:12

Corvis napisał(a):czy program builderowski który będzie zbierał dane z platform będzie SERWEREM nasłuchującym


Nie jestem ekspertem, ale z tego co się orientuję, to serwer zawsze nasłuchuje.

Zauważyłem, że na stronach które podałeś są przykłady. Może zamiast od razu tworzyć własny program, najpierw przeprowadź testy dokładnie tak jak to jest w tych przykładach, to pozwoli zrozumieć jak działają te biblioteki.

Przykłady ze strony: http://zguide.zeromq.org/page:all

SERWER:
KOD cpp:     UKRYJ  
//
//  Hello World server
//  Binds REP socket to tcp://*:5555
//  Expects "Hello" from client, replies with "World"
//
#include <zmq.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>

int main (void)
{
    void*context = zmq_init (1);

    //  Socket to talk to clients
    void*responder = zmq_socket (context, ZMQ_REP);
    zmq_bind (responder, "tcp://*:5555");

    while(1){
        //  Wait for next request from client
        zmq_msg_t request;
        zmq_msg_init (&request);
        zmq_recv (responder, &request, 0);
        printf("Received Hello\n");
        zmq_msg_close (&request);

        //  Do some 'work'
        sleep (1);

        //  Send reply back to client
        zmq_msg_t reply;
        zmq_msg_init_size (&reply, 5);
        memcpy(zmq_msg_data (&reply), "World", 5);
        zmq_send (responder, &reply, 0);
        zmq_msg_close (&reply);
    }
    //  We never get here but if we did, this would be how we end
    zmq_close (responder);
    zmq_term (context);
    return0;
}


KLINET:
KOD cpp:     UKRYJ  
//
//  Hello World server in C++
//  Binds REP socket to tcp://*:5555
//  Expects "Hello" from client, replies with "World"
//
#include <zmq.hpp>
#include <string>
#include <iostream>
#include <unistd.h>

int main (){
    //  Prepare our context and socket
    zmq::context_t context (1);
    zmq::socket_t socket (context, ZMQ_REP);
    socket.bind("tcp://*:5555");

    while(true){
        zmq::message_t request;

        //  Wait for next request from client
        socket.recv(&request);
        std::cout<<"Received Hello"<< std::endl;

        //  Do some 'work'
        sleep (1);

        //  Send reply back to client
        zmq::message_t reply (5);
        memcpy((void*) reply.data(), "World", 5);
        socket.send(reply);
    }
    return0;
}


Kod jest w C++, więc nie będziesz miał z tym problemów. Stwórz te programy i zobacz czy się komunikują ze sobą.

Jesteś pewien, że te biblioteki zostały napisane do komunikacji z platformą MetaTrader 4?
W końcu to nie jest przecież żaden protokół sieciowy, a jedynie - jak rozumiem - coś w rodzaju środowiska, do wymiany danych, jakiś rodzaj bazy danych, a to oznacza, że potrzebny jest zbiór bibliotek do komunikacji z tą platformą.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: ØMQ używał ktoś ???

Nowy postprzez Corvis » niedziela, 12 czerwca 2011, 12:04

Wreszcie znalazłem trochę czasu na powrót do tego projektu. Postanowiłem to zrobić tak jak mówiłeś. Odpaliłem builedera dodałem pliki biblioteki przekleiłem kod przykładu i odrazu ERROR.

Kod: Zaznacz cały
[ILINK32 Error] Error: Unresolved external '_zmq_init' referenced from C:\USERS\IMS\DESKTOP\C++ ZMQ\DEBUG\WIN32\UNIT2.OBJ


próbowałem dodać różne #pragma link itp ale nic nie działa :(
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje sieciowe

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 0 gości