版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
NetworkServiceYao.wen2024/5/28Copyright©MediaTekInc.Allrightsreserved.1AgendaCBMOverviewCBMOverviewCBMAPIsSampleCodeSocketOverviewSocketOverviewSocketAPIsSampleCodeWPSOverviewWPSOverviewWPSMessagesSampleCodeCBM2024/5/28Copyright©MediaTekInc.Allrightsreserved.3CBMOverviewCBMprovidesasetofAPIsthatallinternetapplicationscouldregister/deregisterappidandencode/decodeapp_id,siminfofrom/intoDataaccountID.TheseAPIsarethread-safed,theycouldbecalledbyanytask.2024/5/28Copyright©MediaTekInc.Allrightsreserved.4CommonDataAccountSelectingScreenmmi_dtcnt_select_account_option_with_id()willlaunchthisscreenWhenuserselectanaccount,applicationwillgettheselectedaccountidfromcallbackfunction2024/5/28Copyright©MediaTekInc.Allrightsreserved.5CBMAPIs2024/5/28Copyright©MediaTekInc.Allrightsreserved.6CBMAPIs2024/5/28Copyright©MediaTekInc.Allrightsreserved.7CodingGuideRegisterapp_idg_app_id=cbm_register_app_id(APP_STR_ID,APP_ICON_ID);
/*Registerapp_id*/LaunchDataAccountScreenmmi_dtcnt_select_account_option_with_id(
data_account_callback, /*CallbackFunctions*/ MENU_ID_APP, /*MenuID*/ DATA_ACCOUNT_BEARER_GPRS|DATA_ACCOUNT_BEARER_WIFI,/*Bearer*/ 0, /*DTCNT_SELECT_SIM:DualSIMsupported,0:don’tsupportdualSIM*/ g_app_id, /*app_idfromstep1*/
0); /*DefaultselectedaccountinMMIscreen*/data_account_callback(U32index)
/*indexuserselected*/{
mmi_dtcnt_get_account_name(index,buf,len);/*AccountNameforDisplay*/
g_data_account_id
=
index;}CreateSocketandMakeConnectionsoc_create(...,g_data_account_id);
/*Createsocketandmakeconnections*/Socket2024/5/28Copyright©MediaTekInc.Allrightsreserved.9TheSocketmoduleprovidesaSocketAPIforapplications,e.g.,WAP,Email,etc.TheSocketAPIconsistsofseveralfunctioncalls.Eachfunctionisimplementedinthewayofthread-safeandreentrant.SocketAPIislargelybasedonBerkeleySocketAPI.SocketOverview2024/5/28Copyright©MediaTekInc.Allrightsreserved.10SocketOverviewLayeringSocketApplications(e.g.,WAP,Email)SocketLayer(SOCtask)ProtocolLayer(TCPIPtask:TCP,UDP,IP,ICMP,ARP)BearerLayer(PPP,TCM,WNDRV)CBM(CentralBearerManagement)WAPSOCTCPIPPPPTCMWNDRVEmailCBM2024/5/28Copyright©MediaTekInc.Allrightsreserved.11SocketModeSocketblocking(default)modeSocketnon-blockingmodeNon-blocking+Asynchronousnotificationmode2024/5/28Copyright©MediaTekInc.Allrightsreserved.12Blockingmode2024/5/28Copyright©MediaTekInc.Allrightsreserved.13Non-blockingmodeApplicationSocketTCP/IPsoc_recvRECV_IND(returnSOC_WOULDBLOCK)querybyapplicationnodataavailablesoc_recv(returndata)2024/5/28Copyright©MediaTekInc.Allrightsreserved.14AsynchronousnotificationmodeApplicationSocketTCP/IPsoc_recvRECV_IND(returnSOC_WOULDBLOCK)applicationwillnotbeblockednodataavailablesoc_recvAPP_SOC_NOTIFY_IND(SOC_READ)2024/5/28Copyright©MediaTekInc.Allrightsreserved.15SOC–APPSAPSOCAPPAPP_SOC_GET_HOST_BY_NAME_INDAPP_SOC_GET_HOST_BY_ADDR_INDAPP_SOC_NOTIFY_INDsoc_create,soc_bind,soc_connectsoc_send,soc_sendtosoc_recv,soc_recvfromsoc_getsockopt,soc_setsockoptsoc_gethostbyname,soc_gethostbyname2soc_gethostbyaddrsoc_get_account_localipsoc_getsockaddrsoc_get_last_errorsoc_close,2024/5/28Copyright©MediaTekInc.Allrightsreserved.16MessageAPP_SOC_GET_HOST_BY_NAME_INDAPP_SOC_GET_HOST_BY_ADDR_INDAPP_SOC_NOTIFY_IND2024/5/28Copyright©MediaTekInc.Allrightsreserved.17PrimitivesAPP_SOC_GET_HOST_BY_NAME_INDResponseofsoc_gethostbyname()Fields:addr:returnedIPaddressaddr_len:returnedIPaddresslengthaccess_id:setinsoc_gethostbyname()APP_SOC_GET_HOST_BY_NAME_INDAPP_SOC_GET_HOST_BY_ADDR_INDAPP_SOC_NOTIFY_IND2024/5/28Copyright©MediaTekInc.Allrightsreserved.18PrimitivesAPP_SOC_GET_HOST_BY_ADDR_INDResponseofsoc_gethostbyaddr()Fields:name:returneddomainname(nullterminated)access_id:setinsoc_gethostbyaddr()APP_SOC_GET_HOST_BY_NAME_INDAPP_SOC_GET_HOST_BY_ADDR_INDAPP_SOC_NOTIFY_IND2024/5/28Copyright©MediaTekInc.Allrightsreserved.19PrimitivesAPP_SOC_NOTIFY_INDUsedtogivenotificationsofnetworkeventsFieldsevent_type:SOC_READ Notifytoread SOC_WRITE Notifytowrite SOC_ACCEPT Notifytoaccept SOC_CONNECT Notifytoconnect SOC_CLOSE Notifytocloseresult:IndicateCONNECTsucceedornoterror_causeAPP_SOC_GET_HOST_BY_NAME_INDAPP_SOC_GET_HOST_BY_ADDR_INDAPP_SOC_NOTIFY_IND2024/5/28Copyright©MediaTekInc.Allrightsreserved.20Functionssoc_createTocreateasocketFields:domain: Currently,onlyPF_INETsupported
type: SOCK_STREAM/SOCK_DGRAMprotocol: Shallsettozeromod_id: MOD_GISnwk_account_id: NetworkaccountidReturn:>=0 socket_id<0 errorInfo:Blockingsoc_create,soc_bindsoc_connectsoc_send,soc_sendtosoc_recv,soc_recvfromsoc_setsockopt/soc_getsockoptsoc_gethostbynamesoc_gethostbyname2soc_get_last_errorsoc_get_account_localipsoc_ip_check,soc_close2024/5/28Copyright©MediaTekInc.Allrightsreserved.21Functionssoc_bindTobindalocalipaddresstoasocketFields:s: socket_idaddr: localipaddress,portReturn:0: success<0: failInfo:Blockingsoc_create,soc_bindsoc_connectsoc_send,soc_sendtosoc_recv,soc_recvfromsoc_setsockopt/soc_getsockoptsoc_gethostbynamesoc_gethostbyname2soc_get_last_errorsoc_get_account_localipsoc_ip_check,soc_close2024/5/28Copyright©MediaTekInc.Allrightsreserved.22Functionssoc_connectToconnecttoaspecifiedremoteserverFields:s: socket_idaddr: ipaddrress,portReturns:SOC_WOULDBLOCK inprogressingSOC_ALREADY alreadyconnectedOthers failsoc_create,soc_bindsoc_connectsoc_send,soc_sendtosoc_recv,soc_recvfromsoc_setsockopt/soc_getsockoptsoc_gethostbynamesoc_gethostbyname2soc_get_last_errorsoc_get_account_localipsoc_ip_check,soc_close2024/5/28Copyright©MediaTekInc.Allrightsreserved.23Functionssoc_send,soc_sendtoTosenddatatoaspecifiedremoteserverFields:s: socket_idbuf: bufferpointertodatalen: lengthofbuffertoaddr: ipaddress,port(onlyforsoc_sendto)Returns:>0 numberofbytessentSOC_WOULDBLOCK inprogressothers failsoc_create,soc_bindsoc_connectsoc_send,soc_sendtosoc_recv,soc_recvfromsoc_setsockopt/soc_getsockoptsoc_gethostbynamesoc_gethostbyname2soc_get_last_errorsoc_get_account_localipsoc_ip_check,soc_close2024/5/28Copyright©MediaTekInc.Allrightsreserved.24Functionssoc_recv,soc_recvfromToreceivedata(andreturnthesourceaddress)Fields:s: socket_idbuf: bufferpointertodatalen: lengthofbuffer*fromaddr: ipaddress,port(onlyforsoc_recvfrom)Returns:>0 numberofbytesreceivedSOC_WOULDBLOCK inprogressothers failInfo:NeedtocalliterativelytillreturnsSOC_WOULDBLOCKsoc_create,soc_bindsoc_connectsoc_send,soc_sendtosoc_recv,soc_recvfromsoc_setsockopt/soc_getsockoptsoc_gethostbynamesoc_gethostbyname2soc_get_last_errorsoc_get_account_localipsoc_ip_check,soc_close2024/5/28Copyright©MediaTekInc.Allrightsreserved.25Functionssoc_setsockopt/soc_getsockoptToset(get)optionsonsockets.Fields:s: socket_idoption: option_type(soc_option_enum)val: optionvaluevalsize: sizeoftheoptionvalueReturns:0 success<0 failsoc_create,soc_bindsoc_connectsoc_send,soc_sendtosoc_recv,soc_recvfromsoc_setsockopt/soc_getsockoptsoc_gethostbynamesoc_gethostbyname2soc_get_last_errorsoc_get_account_localipsoc_ip_check,soc_close2024/5/28Copyright©MediaTekInc.Allrightsreserved.26SocketOptionsSOC_NBIOSettonon-blockingmodeSOC_ASYNCSpecifytheeventsapplicationwantstoreceive.SOC_READ/SOC_WRITE/SOC_CONNECT/SOC_CLOSESOC_UDP_ANY_FPORTForaconnectedUDPsocket,thosepacketsfromthesameremoteaddressbutdifferentportwillalsobeaccepted.soc_create,soc_bindsoc_connectsoc_send,soc_sendtosoc_recv,soc_recvfromsoc_setsockopt/soc_getsockoptsoc_gethostbynamesoc_gethostbyname2soc_close_nwk_accountsoc_close_nwk_account_by_idsoc_get_last_errorsoc_get_account_localipsoc_ip_check,soc_close2024/5/28Copyright©MediaTekInc.Allrightsreserved.27Functionssoc_gethostbynameTogetipaddressbygivingdomainnameFields:is_blocking onlynon-blockingsupportedmod_id MOD_GISrequest_id todistinguishdifferentDNSrequestdomain_name*addr/*addr_len returnedipaddressandlengthaccess_id embededinGET_HOST_BY_NAME_INDnwk_account_id networkaccountidReturns:0 successSOC_WOULDBLOCK Inprogressothers failsoc_create,soc_bindsoc_connectsoc_send,soc_sendtosoc_recv,soc_recvfromsoc_setsockopt/soc_getsockoptsoc_gethostbynamesoc_gethostbyname2soc_get_last_errorsoc_get_account_localipsoc_ip_check,soc_close2024/5/28Copyright©MediaTekInc.Allrightsreserved.28Functionssoc_gethostbyname2TogetipaddressesbygivingdomainnameFields:is_blocking onlynon-blockingsupported*addr/*addr_len returnedipaddresses,lengthin_entry_num Maxallowednumberofreturnentries*out_entry_num NumberofreturnedentriesReturns:0 successSOC_WOULDBLOCK inprogressothers failsoc_create,soc_bindsoc_connectsoc_send,soc_sendtosoc_recv,soc_recvfromsoc_setsockopt/soc_getsockoptsoc_gethostbynamesoc_gethostbyname2soc_get_last_errorsoc_get_account_localipsoc_ip_check,soc_close2024/5/28Copyright©MediaTekInc.Allrightsreserved.29Functionssoc_get_last_errorTogetthelastnetworkerror.Fields:s: socket_iderror: SOC_BEARER_FAIL/othersdeatil_cause: detailederrorReturns:0 success<0 failsoc_create,soc_bindsoc_connectsoc_send,soc_sendtosoc_recv,soc_recvfromsoc_setsockopt/soc_getsockoptsoc_gethostbynamesoc_gethostbyname2soc_get_last_errorsoc_get_account_localipsoc_ip_check,soc_close2024/5/28Copyright©MediaTekInc.Allrightsreserved.30Functionssoc_get_account_localipTogetthelocalIPaddressofthesocketFields:s: socket_id*local_ip: returnedipaddressReturnes:0 success<0 failsoc_create,soc_bindsoc_connectsoc_send,soc_sendtosoc_recv,soc_recvfromsoc_setsockopt/soc_getsockoptsoc_gethostbynamesoc_gethostbyname2soc_get_last_errorsoc_get_account_localipsoc_ip_check,soc_close2024/5/28Copyright©MediaTekInc.Allrightsreserved.31Functionssoc_ip_checkTocheckiftheinputstringinthevalidformof IPaddress.Fields:asci_addr: domainnameorIPaddress*ip_addr: returnedIPaddress(inbyteformat)*ip_validity theresultofcheckReturns:KAL_TRUEanIPaddressKAL_FALSE notanIPaddresssoc_create,soc_bindsoc_connectsoc_send,soc_sendtosoc_recv,soc_recvfromsoc_setsockopt/soc_getsockoptsoc_gethostbynamesoc_gethostbyname2soc_get_last_errorsoc_get_account_localipsoc_ip_check,soc_close2024/5/28Copyright©MediaTekInc.Allrightsreserved.32Functionssoc_closeTocloseasocketFieldss: socket_idReturns:0 success<0 failInfo:closethesocketsoc_create,soc_bindsoc_connectsoc_send,soc_sendtosoc_recv,soc_recvfromsoc_setsockopt/soc_getsockoptsoc_gethostbynamesoc_gethostbyname2soc_get_last_errorsoc_get_account_localipsoc_ip_check,soc_close2024/5/28Copyright©MediaTekInc.Allrightsreserved.33SamplecodeSocketUsageSampleCodes(Clientside):/*createsocket*/handle=soc_create(SOC_PF_INET,SOC_SOCK_STREAM,0,MOD_JAYSN,nwk_acct_id);if(handle<0){
return-1;}/*setsocketoption*/option=SOC_READ|SOC_WRITE|SOC_ACCEPT|SOC_CONNECT|SOC_CLOSE;result=soc_setsockopt(handle,SOC_ASYNC,&option,sizeof(kal_uint8));option=KAL_TRUE;result=soc_setsockopt(handle,SOC_NBIO,&option,sizeof(option));/*addressisinthenetworkbyteorder*/result=soc_connect((kal_int8)handle,&addr);if(result==SOC_WOULDBLOCK){/*waitfortheAPP_SOC_NOTIFY_IND(SOC_CONNECT)*/}2024/5/28Copyright©MediaTekInc.Allrightsreserved.34SamplecodeSocketUsageSampleCodes(Serverside):sockaddr_structaddr;Kal_mem_set(&addr,0x00,sizeof(addr));addr.addr_len=0x04;addr.port=xx;if((socket_id=soc_create(PF_INET,SOCK_STREAM,0,MOD_SIP,network_id))<0){returnERROR;}soc_setsockopt(socket_id,SOC_NBIO,&val,sizeof(val));val=SOC_READ|SOC_WRITE|SOC_CLOSE|SOC_ACCEPT;soc_setsockopt(socket_id,SOC_ASYNC,&val,sizeof(val));ret=soc_bind(socket_id,&addr);if(ret<0){soc_close(socket_id);returnERROR;}ret=soc_listen(socket_id,5);if(ret<0){soc_close(socket_id);returnERROR;}WPS2024/5/28Copyright©MediaTekInc.Allrightsreserved.36WPSOverviewWAP2.0ProtocolService(WPS)providesinterfaceforapplicationthatneedstocommunicatewithWAPgateway,HTTPproxy/serverthroughWAP2.0protocolstackChannelSetup:ConfigureaspecificchanneltohandleHTTP/WSPrequestHTTPandWSPrequest:SendHTTP/WSPrequestforapplicationReceiveHTTP/WSPresponseforapplicationCacheandcookieclearrequest:Clearcacheorcookie,whichissharedbyallusers2024/5/28Copyright©MediaTekInc.Allrightsreserved.37WPSOverviewApplicationApplicationAdaptationmoduleServicemoduleSecurity
ServiceWAPHTTP
StackWPSModuleWPSTaskSocketTaskPrimitivesFunctioncallsoc_create,soc_close,soc_connect,soc_send,soc_sendto,soc_recv,soc_recvfrom…APP_SOC_GET_HOST_BY_NAME_INDAPP_SOC_GET_HOST_BY_ADDR_INDAPP_SOC_NOTIFY_INDMSG_ID_WPS_SET_CHANNEL_REQMSG_ID_WPS_HTTP_REQMSG_ID_WPS_READ_CONTENT_REQMSG_ID_WPS_SET_CHANNEL_RSPMSG_ID_WPS_HTTP_RSPMSG_ID_WPS_READ_CONTENT_RSP2024/5/28Copyright©MediaTekInc.Allrightsreserved.38WPSMessage2024/5/28Copyright©MediaTekInc.Allrightsreserved.39WPSMessage2024/5/28Copyright©MediaTekInc.Allrightsreserved.40WPSMessage2024/5/28Copyright©MediaTekInc.Allrightsreserved.41MSG_ID_WPS_SET_CHANNEL_REQ
LocalParameter
wps_set_channel_req_struct
2024/5/28Copyright©MediaTekInc.Allrightsreserved.42MSG_ID_WPS_SET_CHANNEL_REQ
Peerbufferwps_set_channel_req_struct
Ifapplicationdoesn’tspecifyStatic_header,thenWPSwillusethevaluecurrentlyusedbyWAPStatic_header(ifnecessary)mustbefilledinwps_set_channel_req_var_structandthenpackedinpeerbufferbywps_pun_var_part()beforesendingtoWPS.Static_headerwillbeusedintheheaderwhenestablishingWSPsessionwhenconn_typeisWSP_CONN_TYPE_WSP_COand
thefirstWSPrequestofsomededicatedchannelwith
connectiontypeWSP_CONN_TYPE_WSP_CL.2024/5/28Copyright©MediaTekInc.Allrightsreserved.43MSG_ID_WPS_HTTP_REQ
LocalParameterwps__req_struct
2024/5/28Copyright©MediaTekInc.Allrightsreserved.44MSG_ID_WPS_HTTP_REQ
PeerBufferwps__req_var_struct2024/5/28Copyright©MediaTekInc.Allrightsreserved.45MSG_ID_WPS_READ_CONTENT_REQ
LocalParameter
wps_read_content_req_struct2024/5/28Copyright©MediaTekInc.Allrightsreserved.46MSG_ID_WPS_POST_CONTENT_RES
LocalParameterwps_post_content_res_struct2024/5/28Copyright©MediaTekInc.Allrightsreserved.47MSG_ID_WPS_POST_CONTENT_RES
PeerBufferwps_post_content_res_var_struct
2024/5/28Copyright©MediaTekInc.Allrightsreserved.48MessageFlow:GETScenario:applicationwantstogetafileusingWPSserviceStep1:setupachannelStep2:sendtheHTTPrequestStep3:receivethereplyStep4:RemovethechannelInvolvedILM:MSG_ID_WPS_SET_CHANNEL_REQMSG_ID_WPS_SET_CHANNEL_RSPMSG_ID_WPS_HTTP_REQMSG_ID_WPS_HTTP_RSPMSG_ID_WPS_READ_CONTENT_REQMSG_ID_WPS_READ_CONTENT_RSPMSG_ID_WPS_UNSET_CHANNEL_REQMSG_ID_WPS_UNSET_CHANNEL_RSP2024/5/28Copyright©MediaTekInc.Allrightsreserved.49ApplicationMSG_ID_WPS_SET_CHANNEL_REQMSG_ID_WPS_SET_CHANNEL_RSPMSG_ID_WPS_HTTP_REQMessageFlow:GET
--Step1:setupachannel
--Step2:sendtheHTTPrequestWPS2024/5/28Copyright©MediaTekInc.Allrightsreserved.50MessageFlow:GET
--Step3:receivethereplyWPSMSG_ID_WPS_HTTP_RSP,more=1MSG_ID_WPS_READ_CONTENT_REQ,seq_num=1MSG_ID_WPS_READ_CONTENT_RSP,seq_num=1,more=1MSG_ID_WPS_READ_CONTENT_REQ,seq_num=2MSG_ID_WPS_READ_CONTENT_RSP,seq_num=2,more=0Application2024/5/28Copyright©MediaTekInc.Allrightsreserved.51MessageFlow:GET
--Step4:removethechannelWPSMSG_ID_WPS_UNSET_CHANNEL_REQMSG_ID_WPS_UNSET_CHANNEL_RSPApplication2024/5/28Copyright©MediaTekInc.Allrightsreserved.52MessageFlow:POSTScenario:applicationwantstopostdatausingWPSserviceStep1:setupachannelStep2:sendtheHTTPrequestStep3:postdataStep4:RemovethechannelInvolvedILM:MSG_ID_WPS_SET_CHANNEL_REQMSG_ID_WPS_SET_CHANNEL_RSPMSG_ID_WPS_HTTP_REQMSG_ID_WPS_HTTP_RSPMSG_ID_WPS_POST_CONTENT_INDMSG_ID_WPS_POST_CONTENT_RESMSG_ID_WPS_UNSET_CHANNEL_REQMSG_ID_WPS_UNSET_CHANNEL_RSP2024/5/28Copyright©MediaTekInc.Allrightsreserved.53ApplicationWPSMSG_ID_WPS_POST_CONTENT_IND,seq_num=1MSG_ID_WPS_POST_CONTENT_RES,seq_num=1,more_post=1MSG_ID_WPS_HTTP_REQ,more_post=1MSG_ID_WPS_POST_CONTENT_IND,seq_num=2MSG_ID_WPS_POST_CONTENT_RES,seq_num=2,more_post=0MessageFlow:POST
--Step2:sendtheHTTPrequest2024/5/28Copyright©MediaTekInc.Allrightsreserved.54Functionwps_pun_var_partThisfunctionisusedtopack/unpackthefollowingpeerbufferstructofthoseprimitiveswithvariablelengthparameterFields:Op,WPS_PUN_PACK,WPS_PUN_UNPACK,WPS_PUN_SIZEmsg_id*p,*buf,Msg_idInfo:MSG_ID_WPS_SET_CHANNEL_REQ:wps_set_channel_req_var_structMSG_ID_WPS_HTTP_REQ:wps__req_var_structMSG_ID_WPS_HTTP_RSP:wps__rsp_var_structMSG_ID_WPS_READ_CONTENT_RSP:wps_read_content_rsp_var_structMSG_ID_WPS_POST_CONTENT_RES:wps_post_content_res_var_structMSG_ID_WPS_CLEAR_REQ:wps_clear_req_var_struct2024/5/28Copyright©MediaTekInc.Allrightsreserved.55Samplecode//USEMSG_ID_WPS_HTTP_REQvoidwps_send__req(void)//sendMSG_ID_WPS_HTTP_REQ{ilm_struct*ilm_ptr=NULL;wps__req_struct*_req;peer_buff_struct*peer_buff_ptr;wps__req_var_struct_req_var;kal_uint16pdu_length;
charurl[]="://kimo.tw/";_req=(wps__req_struct*)construct_local_para(sizeof(wps__req_struct),TD_CTRL);_req->channel_id=0;_req->request_id=0;_req->metho
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 微生物肥料在森林生态系统中作用的研究-洞察分析
- 网络亚文化抵抗机制研究-洞察分析
- 物联网芯片设计-洞察分析
- 初步合作的意向书(6篇)
- 网站设计公司国际化战略-洞察分析
- 《直营店运营方案》课件
- 从军事训练角度谈体能的快速恢复法
- 办公环境下的健康管理-以家庭医生为核心的服务模式探讨
- 办公环境中宠物文化的价值挖掘与推广
- 创新驱动的展会市场营销战略探讨
- 《非洲民间故事》知识考试题库附答案(含各题型)
- 广州英语小学六年级英语六上册作文范文1-6单元
- 中国戏曲 昆曲学习通超星期末考试答案章节答案2024年
- 工厂车间安全培训试题附参考答案(能力提升)
- 企业内部审计流程规范与操作指南
- 小学生食品安全教育教案(共十五课时)
- 农场场长、副场长岗位责任制
- 起诉申请书范文
- 小数除以小数竖式计算题100道及答案
- 河南省郑州市管城回族区2023-2024学年六年级上学期期末数学试题+
- 2024年全国职业院校技能大赛中职组(母婴照护赛项)考试题库(含答案)
评论
0/150
提交评论