tuxedo基本操作atmi介绍
tuxedo基本命令详细说明

1 tmloadcf➢检查UBBCONFIG文件的内容及格式➢将文本格式的UBBCONFIG文件编译生成二进制文件➢必须在主机上运行➢格式tmloadcf [-n] [-y] [-c] [-b blocks] {UBBCONFIG_file | -}➢参数-c 计算最小的IPC需求-n 仅仅进行UBBCONFIG文件的内容检查,不生成二进制文件-y 覆盖已有的二进制文件之前不提示-b blocks 如果环境变量TUXCONFIG所指的文件存放在一个裸设备上,建议使用该参数;如果该文件存放在文件系统上,则不需要2 tmunloadcf➢将二进制TUXCONFIG文件反编译为文本格式3 tmipcrm➢清除本机上的IPC资源➢自动根据TUXCONFIG_file参数查找相应的IPC资源➢一般在Tuxedo非正常停止的情况下用来清理残留IPC资源➢格式tmipcrm [-y] [-n] [TUXCONFIG_file]➢参数-y 对命令运行过程中的询问回答y-n 不清除IPC资源,只是列出IPC资源TUXCONFIG_file Tuxedo的配置文件。
如果不指定,则使用环境变量TUXCONFIG4 tmboot➢启动Tuxedo➢格式tmboot [-l lmid] [-g grpname] [-i srvid] [-s aout] [-o sequence][-S] [-A] [-b] [-B lmid] [-T grpname] [-e command] [-w] [-y] [-g][-n] [-c] [-M] [-d1]➢参数-l lmid 启动所有绑定到这个逻辑主机的服务,包括应用Server、TMS、Gateway等等-g grpname 启动grpname包含的所有服务,包括应用Server、TMS等-i srvid 启动所有SRVID为srvid的服务-s aout 启动Server名字为aout的服务,也可以用来启动TMS、Gateway等服务。
Tuxedo中间件介绍融金教育精品PPT课件

当系统管理员需要关闭系统,可以通过系统管理工具将关闭系统 的消息发给服务。服务完成所有交易,取消交易发布,关闭资源连接 然后结束。
【融金教育】 金融软件工程师定向培养
服务端程序开发 –运行流程
数据
打开资源
库资
源
tmboot
发布交易
客户端请求 交易请求
处理请求
到客户端
No 发出回应
关闭?
Yes
【融金教育】 金融软件工程师定向培养
【融金教育】 金融软件工程师定向培养
客户端过程 tpcall();
服务端开发
服务端过程
交易函数体 tpreturn();
tpreturn(TPSUCCESS,0,t->data,0,0);
• 第一个值表示交易是否成功,有3种可能:
• TPSUCCESS 交易完全成功,如果是一个会话,TPEV_SVCSUCC被生成
tuxedo介绍1

Tuxedo总体介绍Tuxedo总体介绍1.1 中间件介绍介于客户机与服务器之间的夹层,它突破了二层C/S结构的局限性,为构建大规模、高性能、分布式C/S应用程序提供了通信、事务、安全、容错等基础服务,它屏蔽了底层技术细节,使应用程序开发不必再从底层做起,以自身的复杂性换来了应用程序开发的简单。
最早具有中间件技术思想及功能的软件是IBM的CICS,但由于CICS不是分布式环境的产物,因此人们一般把Tuxedo作为第一个严格意义上的中间件产品。
Tuxedo是1984年在当时属于AT&&T的贝尔实验室开发完成的,但由于分布式处理当时并没有在商业应用上获得像今天一样的成功,Tuxedo在很长一段时期里只是实验室产品,后来被Novell收购,在经过Novell并不成功的商业推广之后,1995年被现在的BEA公司收购。
尽管中间件的概念很早就已经产生,但中间件技术的广泛运用却是在最近10年之中。
BEA公司1995年成立后收购Tuxedo 才成为一个真正的中间件厂商,IBM的中间件MQSeries也是90年代的产品,其它许多中间件产品也都是最近几年才成熟起来。
简单提一下东方通TongLINK,TONGEASY.TUXEDO为交易中间件。
1.2 TUXEDO是什么TUXEDO名字的由来:Transaction for UNIX has been Extended for Distributed Operation,即被分布式操作扩展之后的UNIX事务系统。
BEA TUXEDO是在企业、Internet 这样的分布式运算环境中开发和管理三层结构的客户/服务器型关键任务应用系统的强有力工具。
它具备分布式事务处理和应用通信功能,并提供完善的各种服务来建立、运行和管理关键任务应用系统。
开发人员能够用它建立跨多个硬件平台、数据库和操作系统的可互操作的应用系统。
在当今系统整合、全球应用、永远可用的业务环境中,企业要求分布式事务处理(TP)的基础结构,不仅能够充分发挥现有技能和应用资产的作用,而且还要具备基于标准的互操作性以简化集成。
Tuxedo 功能说明书

Tuxedo功能说明书说明:本说明书是为了适应光大银行的要求,为光大银行提供有关Tuxedo 功能的简要说明列表。
一、交易处理服务1.交易完整性保证机制●当应用系统只有局部事务、没有全局事务时,Tuxedo直接利用数据库的事务处理功能(用或不用XA),这样可提高系统性能。
●当应用系统涉及跨多个资源数据库(同构或异构)的全局事务的时,Tuxedo利用XA标准和两阶段提交协议,通过事务管理器,协调各个数据库的同步。
Tuxedo还可保证可靠性队列/Q 的入出队操作和数据库的更新操作的同步。
在各种情况下,Tuxedo能够确保异构的(或者同构的)数据库以及它资源管理器之间的完整性和一致,并且还在出现节点故障、网络故障或全局资源死锁时利用内部的交易日志来协调全局事务的恢复。
2.交易优先级请求优先级是Tuxedo的事务管理器提供的另一个核心能力。
当某一服务有比其他服务更高的优先级时,服务器在处理请求时,就不再单纯的按照请求在队列中的先后顺序处理,而是按优先级来定。
请求优先级越高的越早被处理。
为了防止低优先级请求总是得不到服务,服务器每隔十个请求,就按FIFO次序进行一次请求选择。
二、可管理性TUXEDO的三层逻辑结构提供了对应用程序高度的可管理性。
它以业务逻辑层为管理的主要对象,把基本业务组件即服务进程的服务做为管理的基本单位。
应用系统由一些基本的组件即服务构成,这样它的易理解、易修改、易扩充等需求都得到保证。
TUXEDO提供一个基于普通WEB浏览器的GUI管理工具,也可根据用户需要提供基于X Window/ Motif 的GUI管理工具;还提供综合性的字符型管理命令;并且提供一个管理信息库(MIB)和编程接口,使用户可根据特定需求编写自己的管理工具。
TUXEDO 的关联产品BEA MANAGER 通过网络管理协议SNMP和TUXEDO的管理信息库MIB可以把TUXEDO对应用程序的管理集成到一般的网络、数据库系统管理工具中,比如OpenView, NetView 等。
Tuxedo应用指南(二)

比较类型缓冲区的特点
• 类型缓冲区之间的比较可以从如下几个方面进行:
–是否是自描述的。自描述的缓冲区在tpcall、 tpreturn中可不指定它的大小。 –有无子类型。 –是否支持DDR。根据缓冲区中的某些数据项的值,按指 定的标准将请求路由到不同的服务器组上。支持DDR的 缓冲区一定是带成员的聚集,并且可以按成员名称访 问。 –是否存在编码、解码。不存在时,传输效率高,但异 质支持差
N次交互
基本通信方式(三)
• 消息通知
前面的方式中,服务器是被动的(处理过程需要由客户机 发起)。如果服务器要主动给客户发消息,就要用到消息 通知。
Client Server tpnotify/tpbroadcast
注册的消息处理器
基本通信方式(四)
• 事件代理
Tuxedo有一个事件代理服务器,客户机和服务器可以通过 它订阅或发布事件。
Application
tpbegin tpcall
Server1 TM Database1 RM
tpinit
Client
tpforward
tpreturn
Server2 tpcommit
Database2
基本通信模式(一)
• 请求/响应模型
最基本的通信方式,客户机发起请求,服务器进程处理完请求后将响 应返回客户机。此时,该交互即完成。其中异步是基本的方式: tpcall = tpacall + tpgetrply
Server/Client tpsubscribe 事件处理器 事件代理 Server/Client tppost
/Q
服务的协作方式(一)
大型应用的一次交易处理一般会涉及与多个服务器交互 (多层结构),服务器的协作方式主要有三种:
TUXEDO简介

第二章:TUXEDO简介Tuxedo是BEA公司的交易中间件产品,1984年由贝尔实验室开发成功,1992年易主Novell 公司,1996年由BEA公司收购,经过十多年的不断更新和完善,Tuxedo已经发展成为交易中间件领域事实上的标准。
2.1TUXEDO系统的组成部分BEA TUXEDO是由服务器端的事务管理器、可靠队列服务、应用域以及客户端的工作站等几个核心部分组成的。
下面对这几部分进行介绍。
图TUXEDO核心组成1.事务管理器/T运行于服务器端的事务管理器是TUXEDO体系结构的中心,它是每个TUXEDO服务器的核心,提供重要的分布式应用服务,包括:名字服务、数据路由、负载平衡、配置管理、分布式事务管理和安全性管理。
它包含TUXEDO的核心数据结构公告板BB (Bulletin Board),BB中包括服务名、路由信息、请求服务的队列和负载等基本信息,TUXEDO/T负责访问和维护BB中的信息,并利用这些信息实现其各项功能。
2.工作站/WS工作站把TUXEDO ATMI API((注:ATMI,应用事务管理接口,是支持应用开发的一组函数) 扩展到客户端应用程序中,它适用于DOS、Windows3.1/95/98/2000/XP、Windows NT、IBM OS/2、Macintosh OS和所有商用版的UNIX。
有了工作站,开发者用ATMI客户端的功能可透明访问在TUXEDO分布式环境中任何服务器上的服务。
有了工作站,用户可在常见的编程环境中如:Visual Basic,PowerBuilder,DELPHI,VC等编写TUXEDO的客户端程序。
3.可靠队列服务/QTUXEDO提供了一个简单的可靠的队列机制,保证应用系统提交的请求和数据可在网络故障或目的服务器瘫痪等情况下也能递交到目的服务器。
应用程序能将服务请求入队和出队,并可以设定系统,使队列中的请求自动地转发给 TUXEDO的服务进程,并取回处理结果。
tuxedo基本操作atmi介绍

tuxedo基本操作atmi介绍ATMI(Authenticated Transactional Message Interface)是一种基于消息的分布式事务处理系统,用于在分布式环境中进行交易和通信。
它是Tuxedo系统的主要组成部分,用于支持多个应用程序之间的高性能、可靠和安全的通信。
ATMI提供了一组API,使开发人员能够在一个或多个计算机平台上创建分布式应用程序。
它提供了数据的传输、一致性、可靠性、安全性和事务管理等功能。
下面是ATMI的一些基本操作和功能:1.事务处理:ATMI支持分布式事务,允许应用程序在多个计算机上执行跨系统和跨应用的事务。
它提供了事务的开始、提交和回滚等操作,确保事务的一致性和可靠性。
2.消息传递:ATMI允许应用程序使用消息进行通信。
它提供了发送和接收消息的API,可以在不同的应用程序之间传递数据和命令。
3.远程调用:ATMI支持远程调用,允许应用程序通过网络调用远程服务器上的程序。
它提供了一些API,使开发人员能够方便地进行跨计算机调用。
4.数据传输:ATMI提供了数据传输的功能,可以在应用程序之间传递数据。
它支持常见的数据格式,如字符串、整数和结构体等。
5.容错性:ATMI具有高度的容错性,可以处理网络故障和系统故障等情况。
它可以自动进行故障恢复,并保持事务的一致性。
6.安全性:ATMI提供了安全性的功能,确保数据在传输过程中的机密性和完整性。
它支持加密和身份验证等机制,保护数据的安全。
7.并发控制:ATMI提供了并发控制的功能,可以对并发访问进行控制。
它使用锁和信号量等机制,确保多个应用程序之间的数据一致性。
总的来说,ATMI是一个强大而灵活的分布式事务处理系统,提供了丰富的功能和API,使开发人员能够构建高性能、可靠和安全的分布式应用程序。
它可以在不同的计算机平台上运行,并支持多种开发语言和数据格式。
无论是企业级系统还是互联网应用程序,ATMI都是一个理想的选择。
TUXEDO教程

TUXEDO教程TUXEDO(The UniX Environment Developed for Operation)是一个基于UNIX的操作系统,它主要用于日常办公和个人使用。
TUXEDO具有简洁、稳定、高效的特点,而且非常容易上手。
在本教程中,我将为大家介绍TUXEDO的基本操作和一些常用功能。
第一部分:TUXEDO的安装和设置第二步:设置TUXEDO安装完成后,你需要对TUXEDO进行一些基本的设置。
例如,你可以设置语言和时区,还可以选择你喜欢的桌面环境。
在这一步,你应该根据自己的需求进行个性化设置。
第二部分:TUXEDO的基本操作1.系统登录启动TUXEDO后,你将会看到一个登录界面。
输入你的用户名和密码,然后点击登录按钮,你就可以进入系统了。
2.桌面环境3.文件管理在TUXEDO中,你可以使用Nautilus(GNOME)、Dolphin(KDE Plasma)等文件管理器来浏览你的文件夹和文件。
你可以通过双击文件夹打开它,或者使用右键菜单进行一些操作,比如复制、剪切、重命名等。
4.应用程序的安装和卸载5.系统更新6.终端操作TUXEDO提供了一个终端,你可以使用它来进行一些高级操作,比如安装软件包、管理用户、执行命令等。
通过打开终端,你可以输入一些命令来完成你想要的操作。
例如,你可以使用“sudo apt-get install<package>”来安装软件包。
第三部分:TUXEDO的高级功能1.多用户管理2.网络设置3.数据备份和恢复在TUXEDO中,你可以使用备份工具来备份你的重要文件和数据。
通过备份工具,你可以选择要备份的文件和文件夹,然后设置备份的位置和计划。
当你需要恢复数据时,只需使用备份工具来选择要恢复的文件和备份位置即可。
4.安全和隐私总结:通过这个教程,你应该已经了解了TUXEDO的基本操作和一些常用功能。
希望这个教程能够帮助你更好地使用TUXEDO,并享受到它简洁、稳定和高效的特点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
系统自带authsvr服务进程,和两个子例程,tpsvrinit(),tpsvrdone。
authsvr:客户端调用tpinit进行认证时,由交易TPAPPAUTH回应。
服务端自动调用tpsvrinit,可以在函数中进行数据库连接和处理命令行参数。
结束时tpsvrdone也被自动调用,可以在函数中断开数据库连接。
这两个例程分别在进程开始时和进程将要结束时,被自动调用。
服务端编程指导:交易内一次只能接收一个请求,发送一个响应。
交易必须以tpretrurn, tpforward结束。
或交易内使用了tpacall,在返回或转发前,要么等待回应,要么使用tpcancel。
tpreturn一旦被调用,控制权就转移到main函数,未进行显示收取的响应会被丢弃,此时客户端会收到错误。
客户端调用tpcall后,若服务端此时对应的tpreturn成功返回,客户端tpcall才能返回。
客户端调用tpacall后,若服务端此时对应的tpreturn成功返回,客户端tpgetrply才能返回。
返回的数据,可由客户端从指针*data处取得。
tpforward调用时,程序逻辑应保证之前的处理都正确,响应被收到。
被调用后,交易不再等待响应。
main函数取得控制权。
被请求的另一个交易负责响应原来的请求。
不能将请求转发到自身。
tpreturn 的参数:rval: 表明交易是否成功执行。
rcode:是应用自定义的返回值。
客户端可通过tpurcode获得tpreturn的rcode值,而不论交易是否成功。
data: 该缓冲区由客户端传递,服务端可以将回应数据写至此地址。
也可以进行tprealloc.而不能tpfree. 服务端也可以自行tpalloc一个缓冲区,并返回给缓冲区,但需要自行若管理。
如果发送的数据长度大于已分配的,tuxedo会自动扩大缓冲。
len: 用来指示响应缓冲的长。
客户端可据此得知数据是否有变化。
如果客户端需要收到一个响应,而tpreturn自身处理时出错,这时tpcall或tpgetrply会失败,客户端应检查tperrno. 此时客户端的data缓冲区没有变化。
若交易返回的消息不符客户端要求,则无法判断应用状态,此时原来的缓冲区保持不变。
如果交易超时,响应数据不会被发送。
发布与取消交易名:当一个服务进程被启动后,它会根据配置文件来向公告板上广告自己有交易名。
这通常由buildserver命令执行时完成。
tpcall:客户端收到响应后。
总是应该使用返回参数中的地址,并比较缓冲区是否有变化。
tpacall:返回值为一个描述符,供tpreply使用。
若标志位包含了tpnoreply,返回的描述符为无符值,不能被随后的tpgetrply引用。
即使在事务模式下,响应可能未全部到达,但仍允许客户端提交,为保证不出错,要尽量保证所有的响应能到达。
在一个事务中,可以为tpcall,tpacall都指定TPNOREPLY,TPNOTRAN标志。
关于缓冲区的参数,type,subtype都要和服务端所期望的类型完全相同。
否则系统会出错。
tpacall的缓冲区只要在返回后,就立即可用作下一次发送请求。
tpgetrply的len指针不能为空。
此函数会一直阻塞直到收到响应。
tpsprio只用作用于接下来的一个请求,无论是同步,异步,被转发的。
其默认值为对应交易的值。
基于对话的开发:对话服务进程不允许使用请求转发。
同一个服务端/客户端都可以同时进行多个会话,最大值为64建立连接的时候,可同时进行数据的发送。
会话内依然可以使用tpcall,tpacall呼叫其它的交易。
建议在服务端使用tpreturn结束连接。
遭遇异常时,可由客户端使用tpdiscon来断开连接。
对话开始时由tpconnect 建立的连接是一个半双工的虚连接:只有获得当前连接控制权的一方才能使用tpsend发送数据。
通过由控制方指定标志值可将连接的控制权转移至连接的另一端。
如果客户端tpconnect时指定了TPSENDONLY则表明客户端取得控制权,若为TPRECVONLY表明服务端取得控制权。
tpsend可指定标志值,而tprecv可获得事件值。
对于具有层级的会话(嵌套会话),为了使多个会话能有序地断开连接,一般由被调用的最深层次的服务端调用tpreturn来终止连接。
基于全局事务的开发:可以跨越多个服务器上的多个资源管理器,并将提交给它们的多个事务共同作为一个大的逻辑事务,要么全部提交,要么全部回滚。
如果某个事务内调用了带有TPNOTRAN标志值的tpcall,tpacall,tpconnect,则它们执行的成功与否不被事务管理器所参考用来提交与回滚但事务依然会因此某个呼叫等待而超时。
事务内可以使用会话。
已经开始的事务内不可以再调用tpbegin().tpbegin:timeout参数应该参考tuxconfig中SCANUNIT(默认为10s)的值,与实际应用关系较大,若和用户交互等待时间较短,处于生产环境时此时间较长。
flags目前必须置0. SCANUNI值指示系统扫描阻塞的交易调用或超时事务的周期。
tpsuspend,tpresume:事务可以被暂停与继续,除了当前还有未处理的异步事件时。
另一个进程可以根据事务标识符来恢复事务。
tpcommit:必须由调用tpbegin的进程来调用tpcommit,tpabort.否则无效。
在未收到响应时,不应使用tpcommit. 当之前的调用失败时,tpcommit不应被使用。
两步提交:主管理器向所有从管理器发送提交指示,所有从设备回送准备完成时,才最终提交所有事务。
tpcommit可以在一步提交时返回,也可以在两步提交后返回。
tpabort:用来结束一个事务,之前未收到响应的所有呼叫描述符都会不可用,而且事务之前所做的改变都会被回滚。
可以在服务端设置AUTORUN为Y,使得一个事务可以自动开始。
这样在收到一个带有tpnotran的tpcall时,不会有意料之外的情况。
关于客户端与服务端是否共同支持事务的讨论比较多。
关于tuxedo队列的开发:tuxedo队列支持出队,入队,转发等操作,并且负责管理基于事务的队列。
使用tuxedo队列,管理员需要做如下任务:定义一个组,专用于队列,比如TMS_QM。
服务进程TMQUEUE,TMQFORWARD,需要被定义。
队列空间需要被创建。
事务中使用队列:系统允许我们在同一个事务中先出队响应,再入队请求。
但不允许先入队请求,再出队响应。
在同一个事务中用于入队的请求需要及时成功提交(若入队后,事务回滚,则某些tpcall可能会重做多次),即使响应当前还未到达。
若出队操作失败,并且当前事务回滚,可以通过配置重试次数与重试间隔来再次dequque.关于出错处理:tperrno :所有的atmi函数如果返回值不正常,系统都会设置tperrno. 对于tpreturn,tpforward,它们用来结束一个交易,服务端通过返回值即可判断出错。
客户端只能通过检查tpcall返回值后,再tperrno来检查是否出错原因。
tpurcode:通过tpreturn的rcode用来设置tpurcode值,该值用来表示应用自定义的一些状态,与tpreturn的返回值是否正常无关。
tuxedo系统错误:当发现系统级错误时,tuxedo会向事务日志中心发送一条日志消息,并设置tperrno.呼叫描述符错误:在异步呼叫时,请求端与响应端通过呼叫描述符来关联匹配。
会话型呼叫时,虚拟连接通过呼叫描述符来标识。
描述符的数量若超出资源限制,则出错。
一个应用的同一个上下文中只允许有50个未响应的消息在排队。
描述符若无效,则不能使用。
如事务结束或超时后,描述符不可以再被使用。
对话错误:如果一个描述符不可用,tpsend,tprecv,tpdiscon返回错误。
在对话连接建立后,若有事件发生,tpsend会发送失败,并且revent值会被设置。
重复对象错误:交易名不可被重复声明,事务不可被多次恢复,事件不可被多次订阅。
通信错误tpesvcfail,tpesvcerr:如果tpreturn在处理过程中发生错误,返回错误并设置tperrno为tpesvcerr,数据不被发送。
对端通过tperrno来获知错误。
如果通过用户编码返回rval为tpfail则系统将tperrno设为tpesvcfail,表示这属于应用自定义的异常,并将数据发送至对端。
通信错误tpeblock,tpgotsig如果tpcall指定TPNOBLICK而发送数据过程中被阻塞,则返回TPEBLOCK。
此标志值指定发送数据过程而不限定立即得到响应。
如果函数处理过程被信号中断,则返回tpgotsig.可通过在标志值tpsigrstrt来保证函数自动重启不致失败。
参数不合法:应用级别的错误,tuxedo系统可以自动检测,建议在应用级别检查所传参数合法。
无效条目:通常在分配资源类函数中,若系统在资源范围内找不到对应的类型标识会返回。
tpalloc中指定了无效的缓冲类型。
tpinit无法在公告板中为自身创建条目,此时公告板空间可能不够。
tpcall请求的交易还未在公告板注册。
tpconnect请求的服务名不存在。
或该服务类型不是对话类型的。
togprio中指定的请求并不存在。
tpunadvertise中指定的订阅名不存在。
tpenqueue/dequque,指定的队列不可用。
tppost/subscribe系统事件分发器不可访问。
操作系统错误:如果tperrno 返回TPEOS,则表明某个系统调用失败。
此时可以使用Uunixerr来获得对应的系统errno.权限错误:若tpinit失败,同时tperrno被置为TPEPERM,则表明配置文件有问题。
协议错误(TPEPROTO):主要由函数调用的顺序不当或函数在不恰当的进程内被调用未加入应用就调用tpcall。
未进行tpbegin.却调用tpcommit.队列错误(TPEDIAGNOSTIC):错误原因可由ctl缓冲取得。
资源管理器错误(TPERMERR):tpopen,tpclose发生错误,错误原因需要对数据库相关信息进行判断。
超时错误:在配置文件中可以定义两种时间限制。
一个应用等待响应的时间,称为阻塞时间。
一个事务处理的时间,称为事务超时。
在事务模式下,若系统返回TPETIME表明一个事务超时。
事务处理时,事务超时的作用会覆盖掉阻塞超时。
普通模式下,若一个异步呼叫超时,调用会失败,但呼叫标识符仍可用。
若发生了事务超时,则其中进行的异步呼叫对应的呼叫标识符不再可用。
缓冲区类型错误:函数发现不识别的缓冲区类型。
事务专题:在事务模式下,需要遵循如下建议,隶属于同个事务的所有进程,如果发送了请求则要等待响应。