ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:1.01MB ,
资源ID:8801832      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8801832.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(行情客户端系统.docx)为本站上传会员【pc****0】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

行情客户端系统.docx

1、 行情客户端应用程序接口 2006年10月19日 文件版本号 修正日期 备 注 V1.01 2007-03-28 首次发布 V1.02 2009-08-07 修改示例程序,添加Join等待 目录 第1章 介绍 1 第2章 体系结构 1 2.1 通讯模式 1 2.2 数据流 2 第3章 运行模式 1 3.1 工作线程 1 3.2 本地文件 1 第4章 开发接口 1 4.1 CFfexFtdcMdu

2、serSpi 接口 1 4.1.1 OnFrontConnected 方法 1 4.1.2 OnFrontDisconnected 方法 1 4.1.3 OnHeartBeatWarning方法 2 4.1.4 OnRspUserLogin方法 2 4.1.5 OnRspUserLogout 方法 3 4.1.6 OnRtnDepthMarketData方法 4 4.1.7 OnRspError 方法 6 4.2 CFfexFtdcMduserApi接口 7 4.2.1 CreateFtdcMduserApi方法 7 4.2.2 Release 方法 7 4.2.3 In

3、it 方法 8 4.2.4 Join 方法 8 4.2.5 GetTradingDay方法 8 4.2.6 RegisterSpi 方法 8 4.2.7 RegisterFront 方法 9 4.2.8 SubscribeMarketDataTopic方法 9 4.2.9 ReqUserLogin 方法 9 4.2.10 ReqUserLogout 方法 10 第5章 开发示例 12 第1章 介绍 行情客户端系统API是一个基于C++的类库, 通过使用和扩展类库提供的接口来实现行情数据的接收。该类库包含以下5个文件: 文件名 版本 文件大小 文件描述

4、 CFfexFtdcMduserApi.h V1.02 11,441 字节 行情接口头文件 CFfexFtdcUserApiStruct.h V1.02 40,238字节 定义了UserAPI所需的一系列数据类型的头文件 CffexFtdcUserApiDataType.h V1.02 142,601 字节 定义了一系列业务相关的数据结构的头文件 CFfexmduserapi.dll V1.02 983,121 字节 动态链接库二进制文件 Cffexmduserapi.lib V1.02 3,530 字节 导入库文件 支持MS VC 6.0,MS VC

5、NET 2003编译器。需要打开多线程编译选项/MT。 第2章 体系结构 行情API使用建立在TCP协议之上FTD协议与交易所的行情发布服务器进行通讯。行情发布服务器负责行情信息的产生与发布,但不参与交易过程。参与交易需要使用另外的“交易员API”。 2.1 通讯模式 FTD协议中的所有通讯都基于某个通讯模式。通讯模式实际上就是通讯双方协同工作的方式。 行情发布涉及的通讯模式共有二种: l 对话通讯模式 l 广播通讯模式 对话通讯模式是指由会员端主动发起的通讯请求。该请求被交易所端接收和处理,并给予响应。例如登入与登出。这种通讯模式与普通的客户/服务器模式相同。 广播通

6、讯模式是指交易所端主动,向市场中的相关会员发出相同的信息。例如行情等。 通讯模式和网络的连接不一定存在简单的一对一的关系。也就是说,一个网络连接中可能传送多种不同通讯模式的报文,一种通讯模式的报文也可以在多个不同的连接中传送。 无论哪种通讯模式,其通讯过程都如图1所示: 图1) 各通讯模式的工作过程 2.2 数据流 行情发布支持对话通讯模式、广播通讯模式: 对话通讯模式下支持对话数据流: 对话数据流是一个双向数据流,会员系统发送请求,行情发布系统反馈应答。交易系统不维护对话流的状态。系统故障时,对话数据流会重置,通讯途中的数据可能会丢失。 广播通讯模式下支持行情数据流:

7、 行情数据流是一个单向数据流,由行情发布系统发向会员系统,用于发送行情信息;行情流是一个可靠的数据流,行情系统维护整个系统的行情流,在一个交易日内,会员系统断线恢复连接时,可以请求行情系统发送指定序号之后的行情流数据。 行情服务所提供的行情内容是按照主题组织的。每个主题包括一组合约的行情,还包括了行情发布内容和发布方式,包括行情深度、采样频率、延迟时间等。交易所会公布各行情主题的具体内容,并设定每个行情用户所能订阅的行情主题。每个行情主题对应着一个行情流。 要获得行情通知,客户端必需在连接行情服务器时,订阅一个或多个行情发布主题。 第3章 运行模式 3.1 工作线程 交易员客户

8、端应用程序至少由两个线程组成,一个是应用程序主线程,一个是交易员API工作线程。应用程序与交易系统的通讯是由API工作线程驱动的。 CFfexFtdcMduserApi提供的接口是线程安全的,可以有多个应用程序线程同时发出请求。 CFfexFtdcMduserSpi提供的接口回调是由API工作线程驱动,如果重载的某个回调函数阻塞,则等于阻塞了API工作线程,API与交易系统的通讯会停止。因此,在CFfexFtdcTraderSpi派生类的回调函数中,通常应迅速返回,可以利用将数据放入缓冲区或通过Windows的消息机制来实现。 3.2 本地文件 交易员API在运行过程中,会将一些数据写

9、入本地文件中。调用CreateFtdcMduserApi函数,可以传递一个参数,指明存贮本地文件的路径。该路径必须在运行前已创建好。本地文件的扩展名都是”.con”。 第4章 开发接口 行情客户端系统API提供了二个接口,分别为CFfexFtdcMduserApi和CFfexFtdcMduserSpi。 4.1 CFfexFtdcMduserSpi 接口 CFfexFtdcMduserSpi实现了事件通知接口。用户必需派生CFfexFtdcMduserSpi接口,编写事件处理方法来处理感兴趣的事件。 4.1.1 OnFrontConnected 方法 当客户端与行情发布服务

10、器建立起通信连接时(还未登录前),该方法被调用。 函数原型: void OnFrontConnected(); 本方法在完成初始化后调用,可以在其中完成用户登录任务。 4.1.2 OnFrontDisconnected 方法 当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。 函数原型: void OnFrontDisconnected (int nReason); 参数: nReason:连接断开原因 0x1001 网络读失败 0x1002 网络写失败 0x2001 接收心跳超时 0x2002 发送心跳

11、失败 0x2003 收到错误报文 4.1.3 OnHeartBeatWarning方法 心跳超时警告。当长时间未收到报文时,该方法被调用。 函数原型: void OnHeartBeatWarning(int nTimeLapse); 参数: nTimeLapse:距离上次接收报文的时间 4.1.4 OnRspUserLogin方法 当客户端发出登录请求之后,该方法会被调用,通知客户端登录是否成功。 函数原型: void OnRspUserLogin( CFfexFtdcRspUserLoginField *pRspUserLogin, CFfexFtdcRspIn

12、foField *pRspInfo, int nRequestID, bool bIsLast); 参数: pRspUserLogin:返回用户登录信息的地址。 用户登录信息结构: struct CFfexFtdcRspUserLoginField { ///交易日 TFfexFtdcDateType TradingDay; ///登录成功时间 TFfexFtdcTimeType LoginTime; ///最大本地报单号 TFfexFtdcOrderLocalIDType MaxOrderLocalID; ///交易用户代码 TFfexFtd

13、cUserIDType UserID; ///会员代码 TFfexFtdcParticipantIDType ParticipantID; }; pRspInfo:返回用户响应信息的地址。特别注意在有连续的成功的响应数据时,中间有可能返回NULL,但第一次不会,以下同。错误代码为0时,表示操作成功,以下同。 响应信息结构: struct CFfexFtdcRspInfoField { ///错误代码 TFfexFtdcErrorIDType ErrorID; ///错误信息 TFfexFtdcErrorMsgType ErrorMsg; };

14、 nRequestID:返回用户登录请求的ID,该ID由用户在登录时指定。 bIsLast:指示该次返回是否为针对nRequestID的最后一次返回。 4.1.5 OnRspUserLogout 方法 当客户端发出登出请求之后,该方法会被调用,通知客户端登出是否成功。 函数原型: void OnRspUserLogout( CFfexFtdcRspUserLogoutField *pRspUserLogout, CFfexFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); 参数: pRspUse

15、rLogout:返回用户登出信息的地址。 用户登出信息结构: struct CFfexFtdcRspUserLogoutField { ///交易用户代码 TFfexFtdcUserIDType UserID; ///会员代码 TFfexFtdcParticipantIDType ParticipantID; }; pRspInfo:返回用户响应信息的地址。 响应信息结构: struct CFfexFtdcRspInfoField { ///错误代码 TFfexFtdcErrorIDType ErrorID; ///错误信息 TF

16、fexFtdcErrorMsgType ErrorMsg; }; nRequestID:返回用户登出请求的ID,该ID由用户在登出时指定。 bIsLast:指示该次返回是否为针对nRequestID的最后一次返回。 4.1.6 OnRtnDepthMarketData方法 行情通知,行情服务器会主动通知客户端。 函数原型: void OnRtnDepthMarketData(CFfexFtdcDepthMarketDataField *pDepthMarketData); 参数: pDepthMarketData:返回市场行情信息的地址。 深度市场行情信息结构:

17、struct CFfexFtdcDepthMarketDataField { ///交易日 TFfexFtdcDateType TradingDay; ///结算组代码 TFfexFtdcSettlementGroupIDType SettlementGroupID; ///结算编号 TFfexFtdcSettlementIDType SettlementID; ///最新价 TFfexFtdcPriceType LastPrice; ///昨结算 TFfexFtdcPriceType PreSettlementPrice; ///昨收盘 TF

18、fexFtdcPriceType PreClosePrice; ///昨持仓量 TFfexFtdcLargeVolumeType PreOpenInterest; ///今开盘 TFfexFtdcPriceType OpenPrice; ///最高价 TFfexFtdcPriceType HighestPrice; ///最低价 TFfexFtdcPriceType LowestPrice; ///数量 TFfexFtdcVolumeType Volume; ///成交金额 TFfexFtdcMoneyType Turnover; ///持仓

19、量 TFfexFtdcLargeVolumeType OpenInterest; ///今收盘 TFfexFtdcPriceType ClosePrice; ///今结算 TFfexFtdcPriceType SettlementPrice; ///涨停板价 TFfexFtdcPriceType UpperLimitPrice; ///跌停板价 TFfexFtdcPriceType LowerLimitPrice; ///昨虚实度 TFfexFtdcRatioType PreDelta; ///今虚实度 TFfexFtdcRatioType

20、CurrDelta; ///最后修改时间 TFfexFtdcTimeType UpdateTime; ///最后修改毫秒 TFfexFtdcMillisecType UpdateMillisec; ///合约代码 TFfexFtdcInstrumentIDType InstrumentID; ///申买价一 TFfexFtdcPriceType BidPrice1; ///申买量一 TFfexFtdcVolumeType BidVolume1; ///申卖价一 TFfexFtdcPriceType AskPrice1; ///申卖量一 T

21、FfexFtdcVolumeType AskVolume1; ///申买价二 TFfexFtdcPriceType BidPrice2; ///申买量二 TFfexFtdcVolumeType BidVolume2; ///申卖价二 TFfexFtdcPriceType AskPrice2; ///申卖量二 TFfexFtdcVolumeType AskVolume2; ///申买价三 TFfexFtdcPriceType BidPrice3; ///申买量三 TFfexFtdcVolumeType BidVolume3; ///申卖价三

22、 TFfexFtdcPriceType AskPrice3; ///申卖量三 TFfexFtdcVolumeType AskVolume3; ///申买价四 TFfexFtdcPriceType BidPrice4; ///申买量四 TFfexFtdcVolumeType BidVolume4; ///申卖价四 TFfexFtdcPriceType AskPrice4; ///申卖量四 TFfexFtdcVolumeType AskVolume4; ///申买价五 TFfexFtdcPriceType BidPrice5; ///申买量五

23、 TFfexFtdcVolumeType BidVolume5; ///申卖价五 TFfexFtdcPriceType AskPrice5; ///申卖量五 TFfexFtdcVolumeType AskVolume5; }; 4.1.7 OnRspError 方法 针对用户请求的出错通知。 函数原型: void OnRspError( CFfexFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) 参数: pRspInfo:返回用户响应信息的地址。 响应信息结构: struct CF

24、fexFtdcRspInfoField { ///错误代码 TFfexFtdcErrorIDType ErrorID; ///错误信息 TFfexFtdcErrorMsgType ErrorMsg; }; nRequestID:返回用户登出请求的ID,该ID由用户在登出时指定。 bIsLast:指示该次返回是否为针对nRequestID的最后一次返回。 4.2 CFfexFtdcMduserApi接口 CFfexFtdcMduserApi接口提供给客户登陆、登出行情查询服务器,进行行情查询等功能。 4.2.1 CreateFtdcMduserApi方法

25、 产生一个CFfexFtdcMduserApi的一个实例,不能通过new来产生。 函数原型: static CFfexFtdcMduserApi *CreateFtdcMduserApi(const char *pszFlowPath = ""); 参数: pszFlowPath:常量字符指针,用于指定一个文件目录来存贮行情服务发布消息的状态。 默认值代表当前目录。 返回值: 返回一个指向CFfexFtdcMduserApi实例的指针。 4.2.2 Release 方法 释放一个CFfexFtdcMduserApi实例。 函数原型: void Release();

26、 4.2.3 Init 方法 使客户端开始与行情发布服务器建立连接,连接成功后可以进行登陆。 函数原型: void Init(); 4.2.4 Join 方法 客户端等待一个接口实例线程的结束。 函数原型: void Join(); 4.2.5 GetTradingDay方法 获得当前交易日。只有当与服务器连接建立后才会取到正确的值。 函数原型: const char *GetTradingDay(); 返回值: 返回一个指向日期信息字符串的常量指针。 4.2.6 RegisterSpi 方法 注册一个派生自CFfexFtdcMduserSpi接口类的实例,该实

27、例将完成事件处理。 函数原型: void RegisterSpi(CFfexFtdcMduserSpi *pSpi) ; 参数: pSpi:实现了CFfexFtdcMduserSpi接口的实例指针。 4.2.7 RegisterFront 方法 设置行情发布服务器的地址。 函数原型: void RegisterFront(char *pszFrontAddress); 参数: pszFrontAddress:指向后台服务器地址的指针。服务器地址的格式为:“protocol://ipaddress:port”,如:”tcp://127.0.0.1:17001”。 “tcp”代

28、表传输协议,“127.0.0.1”代表服务器地址。”17001”代表服务器端口号。 4.2.8 SubscribeMarketDataTopic方法 客户端订阅自己需要的行情。订阅后行情服务器会自动发出行情通知给客户端。 函数原型: void SubscribeMarketDataTopic (int nTopicID, TE_RESUME_TYPE nResumeType); 参数: nTopicID:代表深度行情的主题,由交易所公布。 nResumeType:市场行情重传方式 TERT_RESTART:从本交易日开始重传 TERT_RESU

29、ME:从上次收到的续传 TERT_QUICK:先传送当前行情快照,再传送登录后市场行情的内容 4.2.9 ReqUserLogin 方法 用户发出登陆请求。 函数原型: int ReqUserLogin( CFfexFtdcReqUserLoginField *pReqUserLoginField, int nRequestID); 参数: pReqUserLoginField:指向用户登录请求结构的地址。 用户登录请求结构: struct CFfexFtdcReqUserLoginField { ///交易日 TFfexFtdcDateTy

30、pe TradingDay; ///交易用户代码 TFfexFtdcUserIDType UserID; ///会员代码 TFfexFtdcParticipantIDType ParticipantID; ///密码 TFfexFtdcPasswordType Password; }; nRequestID:用户登录请求的ID,该ID由用户指定,管理。 返回值: 0,代表成功。其它值代表失败。 4.2.10 ReqUserLogout 方法 用户发出登出请求。 函数原型: int ReqUserLogout( CFfexFtdcReqUserLogou

31、tField *pReqUserLogout, int nRequestID); 参数: pReqUserLogout:指向用户登出请求结构的地址。 用户登出请求结构: struct CFfexFtdcReqUserLogoutField { ///交易用户代码 TFfexFtdcUserIDType UserID; ///会员代码 TFfexFtdcParticipantIDType ParticipantID; }; nRequestID:用户登出请求的ID,该ID由用户指定,管理。 返回值: 0,代表成功。其它值代表失败。 第5章 开发示例

32、 // mdusertest.cpp : //一个简单的例子,介绍CFfexFtdcMduserApi和CFfexFtdcMduserSpi接口的使用。 #include "stdio.h" #include "FtdcMduserApi.h" class CSimpleHandler : public CFfexFtdcMduserSpi { public: // 构造函数,需要一个有效的指向CFfexFtdcMduserApi实例的指针 CSimpleHandler(CFfexFtdcMduserApi *pUserApi) : m_pUserApi(pUse

33、rApi) {} ~CSimpleHandler() {} // 当客户端与行情发布服务器建立起通信连接,客户端需要进行登录 void OnFrontConnected() { CFfexFtdcReqUserLoginField reqUserLogin; strcpy(reqUserLogin.TradingDay, m_pUserApi->GetTradingDay()); strcpy(reqUserLogin.ParticipantID, "P001"); strcpy(reqUserLogin.UserID, "U001"); s

34、trcpy(reqUserLogin.Password, "P001"); m_pUserApi->ReqUserLogin(&reqUserLogin, 0); } // 当客户端与行情发布服务器通信连接断开时,该方法被调用 void OnFrontDisconnected() { // 当发生这个情况后,API会自动重新连接,客户端可不做处理 printf("OnFrontDisconnected.\n"); } // 当客户端发出登录请求之后,该方法会被调用,通知客户端登录是否成功 void OnRspUserLogin(CFfex

35、FtdcRspUserLoginField *pRspUserLogin, CFfexFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { printf("OnRspUserLogin:\n"); printf("ErrorCode=[%d], ErrorMsg=[%s]\n", pRspInfo->ErrorID, pRspInfo->ErrorMsg); printf("RequestID=[%d], Chain=[%d]\n", nRequestID, bIsLast); if (pRspInf

36、o->ErrorID != 0) { // 端登失败,客户端需进行错误处理 printf("Failed to login, errorcode=%d errormsg=%s requestid=%d chain=%d", pRspInfo->ErrorID, pRspInfo->ErrorMsg, nRequestID, bIsLast); } } // 深度行情通知,行情服务器会主动通知客户端 void OnRtnDepthMarketData(CffexFtdcDepthMarketDataField *pMarketData) { // 客户

37、端按需处理返回的数据 } // 针对用户请求的出错通知 void OnRspError(CFfexFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { printf("OnRspError:\n"); printf("ErrorCode=[%d], ErrorMsg=[%s]\n", pRspInfo->ErrorID, pRspInfo->ErrorMsg); printf("RequestID=[%d], Chain=[%d]\n", nRequestID, bIsLast); //

38、 客户端需进行错误处理 } private: // 指向CFfexFtdcMduserApi实例的指针 CFfexFtdcMduserApi *m_pUserApi; }; int main() { // 产生一个CFfexFtdcMduserApi实例 CFfexFtdcMduserApi *pUserApi = CFfexFtdcMduserApi::CreateFtdcMduserApi(); // 产生一个事件处理的实例 CSimpleHandler sh(pUserApi); // 注册一事件处理的实例 pUserApi->Regi

39、sterSpi(&sh); // 注册需要的深度行情主题 /// TERT_RESTART:从本交易日开始重传 /// TERT_RESUME:从上次收到的续传 /// TERT_QUICK:先传送当前行情快照,再传送登录后市场行情的内容 pUserApi-> SubscribeMarketDataTopic (101, TERT_RESUME); pUserApi-> SubscribeMarketDataTopic (102, TERT_RESUME); // 设置行情发布服务器的地址 pUserApi->RegisterFront("tcp://192.168.1.1:17000"); // 使客户端开始与行情发布服务器建立连接 pUserApi->Init(); // 等待行情接收 pUserApi->Join(); // 释放useapi实例 pUserApi->Release(); return 0; }

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服