Teradata Client Access

2.   Client Access

2.1         Client Connections

Users can access data in the Teradata Database through an application on both channel-attached and network-attached clients. Additionally, the node itself can act as a client. Teradata client software is installed on each client (channel-attached, network-attached, or node) and communicates with RDBMS software on the node. You may occasionally hear either type of client referred to by the legacy term of "host," though this term is not typically used in documentation or product literature.

<v:shapetype o:spt="75" removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}" coordsize="21600,21600" stroked="f" id="_x0000_t75" filled="f" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"><v:stroke removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}" joinstyle="miter"></v:stroke><v:formulas removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"><v:f eqn="if lineDrawn pixelLineWidth 0" removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></v:f><v:f eqn="sum @0 1 0" removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></v:f><v:f eqn="sum 0 0 @1" removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></v:f><v:f eqn="prod @2 1 2" removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></v:f><v:f eqn="prod @3 21600 pixelWidth" removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></v:f><v:f eqn="prod @3 21600 pixelHeight" removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></v:f><v:f eqn="sum @0 0 1" removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></v:f><v:f eqn="prod @6 1 2" removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></v:f><v:f eqn="prod @7 21600 pixelWidth" removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></v:f><v:f eqn="sum @8 21600 0" removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></v:f><v:f eqn="prod @7 21600 pixelHeight" removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></v:f><v:f eqn="sum @10 21600 0" removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></v:f></v:formulas><v:path gradientshapeok="t" removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}" o:extrusionok="f" o:connecttype="rect"></v:path><o:lock removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}" v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}" type="#_x0000_t75" id="_x0000_i1025" alt="" style="WIDTH: 355.5pt; HEIGHT: 209.25pt"><v:imagedata o:href="teradata考试资料/Basic/Basic/Untitled/cli-hw.gif" removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>

2.2         Channel-Attached Client

Channel-attached clients are IBM-compatible mainframe systems supported by the Teradata Database. The following software components installed on the mainframe are responsible for communications between client applications and the Channel Driver on a Teradata node: <o:p removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></o:p>

  • Teradata Director Program (TDP) software to manage session traffic, installed on the channel-attached client. <o:p removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></o:p>
  • Call-Level Interface (CLI), a library of routines that are the lowest-level interface to Teradata. <o:p removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></o:p>

Communication with the Teradata System<o:p removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></o:p>

Communication from client applications on the mainframe goes through the mainframe channel, to the Host Channel Adapter on the node, to the Channel Driver software.<o:p removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></o:p>

2.3         Network Attached Client

The Teradata Database supports network-attached clients connected to the node over a LAN. The following software components installed on the network-attached client are responsible for communication between client applications and the Teradata Gateway on a Teradata node: <o:p removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></o:p>

  • ODBC <o:p removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></o:p>
  • CLIv2 <o:p removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></o:p>

Communication with the Teradata System <o:p removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></o:p>

Communication from applications on the network-attached client goes over the LAN, to the Ethernet card on the node, to the Teradata Gateway software.<o:p removechild="function MyRC(arg1){var self = this;if (self.removeAttribute)self.removeAttribute(&amp;quot;removeChild&quot;);var result = self[&amp;quot;removeChild&quot;](arg1);self[&amp;quot;removeChild&quot;] = arguments.callee; /*Finally restore the Override Function*/if(arg1.clearAttributes)arg1.clearAttributes();if(arg1.onclick)arg1.οnclick=null;if(arg1.onmousemove)arg1.οnmοusemοve=null;if(arg1.onmouseover)arg1.οnmοuseοver=null;if(arg1.ondblclick)arg1.οndblclick=null;if(arg1.onmouseenter)arg1.οnmοuseenter=null;if(arg1.onmouseleave)arg1.οnmοuseleave=null;return result;}"></o:p>

2.4         Node

The node is considered a network-attached client. If you install application software on a node, it will be treated like an application on a network-attached client. In other words, communications from applications on the node go through the Te

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值