SubmitUserSystemInfo
上报用户终端信息,用于中继服务器操作员登录模式,操作员登录后,可以多次调用该接口上报不同客户信息。
◇ 1.函数原型
virtual int SubmitUserSystemInfo(CThostFtdcUserSystemInfoField *pUserSystemInfo) = 0;
◇ 2.参数
pUserSystemInfo:用户系统信息
struct CThostFtdcUserSystemInfoField
{
///经纪公司代码
TThostFtdcBrokerIDType BrokerID;
///用户代码
TThostFtdcUserIDType UserID;
///用户端系统内部信息长度
TThostFtdcSystemInfoLenType ClientSystemInfoLen;
///用户端系统内部信息
TThostFtdcClientSystemInfoType ClientSystemInfo;
///用户公网IP
TThostFtdcIPAddressType ClientPublicIP;
///终端IP端口
TThostFtdcIPPortType ClientIPPort;
///登录成功时间
TThostFtdcTimeType ClientLoginTime;
///App代码
TThostFtdcAppIDType ClientAppID;
};
UserID:此处应该填终端的投资者账号,即InvestorID,而非操作员账号。
ClientSystemInfoLen:加密后的用户终端系统内部信息的长度
ClientSystemInfo:加密后的用户终端系统内部信息。
ClientPublicIP:用户终端IP,由中继服务器采集和填写
ClientLoginTime:用户登录中继时间,由中继服务器采集和填写
ClientAppid:用户终端的appid,由中继服务器采集和填写
◇ 3.返回
0 正确
-1 字段长度不对
-2 非CTP采集的终端信息
-4 当前用户非一对多操作员
-5 字段中存在非法字符或者长度超限
-6 采集结果字段错误
◇ 4.调用示例
//多对一中继终端使用方法
Step 1 中继在启动后,在API连接后发起认证
Authenticate();
Step 2 认证成功后发起登录
UserLogin();
Step 3 终端登录中继时,中继上报用户终端信息
char pSystemInfo[344];
int len;
CTP_GetSystemInfo(pSystemInfo, len);
CThostFtdcUserSystemInfoField field1;
memset(&field1, 0, sizeof(field));
strcpy(field1.BrokerID, "9999");
strcpy(field1.UserID, "00001");
memcpy(field1.ClientSystemInfo, pSystemInfo, len);
field1.ClientSystemInfoLen = len;
strcpy(field1.ClientPublicIP, "127.0.0.1");
field1.ClientIPPort = 65535;
strcpy(field1.ClientLoginTime, "11:28:28");
strcpy(field1.ClientAppID, "Q7");
m_pUserApi->SubmitUserSystemInfo(&field1);
◇ 5.FAQ
采集信息上报时候总是提示operation not permitted,这是为什么?
如果提示operation not permitted,可能是AppID类型错误。例如,直连模式的AppID,却错误调用了SubmitUserSystemInfo。 此错误不会通过特定接口返回,只在标准输出中提示,例如直接在屏幕上打印出来。 |
不上报采集信息,会影响登录吗?
不影响登录,CTP不做控制,但这样不符合监管要求。 |