Problem z klasą cCardClientNewCamd
Ostatnio zmodyfikowano 2013-12-30 11:49
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? 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 ); 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 |
|
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? |
|
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. |
|
« 1 » |