Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z klasą cCardClientNewCamd

Ostatnio zmodyfikowano 2013-12-30 11:49
Autor Wiadomość
jga
Temat założony przez niniejszego użytkownika
Problem z klasą cCardClientNewCamd
» 2013-12-28 10:20:37
Jak połączyć się z hostem mając dane:
- hostname
- port
- username
- password
przy pomocy klasy cCardClientNewCamd z pakietu biblioteki EmuNation3.0.5.0-Source-2008? Chodzi mi o najprostszy schemat. Może ktoś się już bawił kiedyś tą klasą?
Problem w tym że username i password są PRIVATE w cCardClientNewCamd. hostname i port są również PRIVATE w klasie cNetSocket. W takim razie jak te parametry w ogóle przekazać do obiektu tej klasy?

C/C++
class cCardClientNewCamd
    : public cCardClient
    , private cTripleDes
    , private cIdSet
{
private:
    cNetSocket so;
    unsigned char configKey[ 14 ];
    unsigned short netMsgId;
    int caId, protoVers, cdLen;
    bool emmProcessing;
    char username[ USERLEN ], password[ PASSWDLEN ];
    //
    void InitVars( void );
    void InitProtoVers( int vers );
    bool NextProto( void );
    void InitCustomData( struct CustomData * cd, const unsigned short PrgId, const unsigned char * data );
    void PrepareLoginKey( unsigned char * deskey, const unsigned char * rkey, const unsigned char * ckey );
protected:
    virtual bool Login( void );
public:
    cCardClientNewCamd( const char * Name );
    // Client Helper functions
    bool SendMessage( cNetSocket * so, const unsigned char * data, int len, bool UseMsgId, const struct CustomData * cd = 0, comm_type_t commType = COMMTYPE_CLIENT );
    int ReceiveMessage( cNetSocket * so, unsigned char * data, bool UseMsgId, struct CustomData * cd = 0, comm_type_t commType = COMMTYPE_CLIENT );
    bool CmdSend( cNetSocket * so, net_msg_type_t cmd, comm_type_t commType = COMMTYPE_CLIENT );
    int CmdReceive( cNetSocket * so, comm_type_t commType = COMMTYPE_CLIENT );
    //
    virtual bool Init( const char * CfgDir );
    virtual bool CanHandle( unsigned short SysId );
    virtual bool ProcessECM( const cEcmInfo * ecm, const unsigned char * data, unsigned char * Cw );
};
Pro
P-100393
m4snow
takie tam
» 2013-12-29 19:24:44
Nie pisałem w tym, ale na pierwszy rzut oka IMO:

Init( const char * CfgDir );

Sprawdziłem plik newcamd.cpp pakietu EmuNation3.0.5.0-Source-2008 (http://www.skystar.org/index.php?subcat=16) (nie wiem czy masz taki sam... Ale jeśli masz to super)
Init przyjmuje w argumencie
const char* config
parametry username, password, host, port, key (ssh chyba) i pewnie kilka innych.
Co do formatu pewnie trzeba potestować albo zrozumieć wyrażenie regularne, które tam służy do parsowania config. Jeśli się nie mylę to dajesz pewnie ten ciąg jakoś tak: "host:username:password:key" itp.

____
Na razie zrobiłem sandboxa z funkcji, które parsują ten char* i sprawdzam co czyta jak wpiszę ciąg.
Rozpoznałem następującą kolejność podawania argumentów:
host:port:emm:login:haslo gdzie port, emm to wartość typu int
Przykład: std::string config = "192.168.1.1:12:1:Ala:Alamakota";


Mam nadzieję że coś pomogłem :D

BTW: do pracy czy na zaliczenie?
P-100568
jga
Temat założony przez niniejszego użytkownika
» 2013-12-30 11:49:54
No tak, teraz wszystko OK. Przeoczyłem ważną funkcję tej klasy. Wielkie dzięki.
P-100616
« 1 »
  Strona 1 z 1