期货公司技术部说应上期要求以后CTP连接前需要强制客户端认证,并给了一段代码,但是我不知道代码该放在程序的什么地方,其中的有些变量也不知道是如何定义的,如m_hevent,CTP会自己发信号给m_hevent吗? 请问有人做个认证的事情吗?能否给出完整的代码或例子呢,先谢谢了! 关于客户端认证: 客户端认证的目的是为了保证投资者在交易过程中所使用的客户端是被该投资者所在经纪公司所认可的客户端产品。基本认证过程为:在客户端和综合交易平台(ASP)各自维护与经纪公司和客户端产品相关联的认证码,当客户端请求认证时由ASP生成随机字符串发送给客户端,客户端根据自身的认证码对该随机字符串进行处理后生成认证信息发送给ASP,最终由ASP根据自身维护的认证码对随机字符串进行相同处理后的结果与客户端的认证信息进行比对,以判断客户端的合法性。 下面是期货公司给的代码: CThostFtdcReqAuthenticateField reqAuthenticateField; _tcscpy_s(reqAuthenticateField.BrokerID,m_brokerid); _tcscpy_s(reqAuthenticateField.UserID, investorid); _tcscpy_s(reqAuthenticateField.UserProductInfo, FT_UserProductInfo); _tcscpy_s(reqAuthenticateField.AuthCode, FT_AuthCode); ret=m_tradeapi->ReqAuthenticate(&reqAuthenticateField, ++m_nRequestID); if(0!=ret) { return ret; } eret=WaitForSingleObject(m_hevent, CTP_TIME_OUT*5); if(eret==WAIT_TIMEOUT) { return CTP_ERR_TIMEOUT; }
明白你的意思了,非常感谢! 现有一事不明,请教要在什么地方发起主动认证(即调用ReqAuthenticate),在OnFrontConnected还是OnRspUserLogin?或者别的地方?还是在OnRspAuthenticate里收到客户端未认证消息(pRspInfo->ErrorID==63)后再发认证信息呢?谢谢!