




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網絡文化產品編輯兼職勞動合同
- 民族文化圖書出版合作項目合同
- 核心員工股權激勵與公司戰略布局合同
- 智能倉儲系統數據安全與運維保障合同
- 藥品不良反應監測與效果反饋服務協議
- 影視作品替身演員經紀合同
- 情緒茶服務協議書
- 短視頻平臺游戲內容分成合作協議
- 烘培師學徒協議書
- 自愿離婚姻協議書
- 物聯網工程技術考研真題卷100道及答案
- 2024北京通州區三年級(下)期末語文試題及答案
- 2025-2030生鮮商超行業市場發展現狀及競爭形勢與投資前景研究報告
- GB/T 5453-2025紡織品織物透氣性的測定
- 臨床教學醫院發展規劃塑造未來醫療教育的新格局
- 第二單元第2課《律動青春》教學設計 -2024-2025學年人教版(2024)初中美術七年級下冊
- 杭州市拱墅區部分校教科版六年級下冊期末考試科學試卷(解析版)
- 《胸痛中心質控指標及考核標準》(第三版修訂版)
- 2025年郵政運營面試試題及答案
- 酒店經理培訓課程
- 人教版初中歷史與社會九年級上冊 4.1.2 土地改革與三大戰役 教學設計
評論
0/150
提交評論