




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程設(shè)計(jì):FTP的設(shè)計(jì)與實(shí)現(xiàn)/*dient.c*/#include<winsock2.h>#include<stdio.h>#include<stdlib.h>#pragmacomment(lib,"ws2_32.lib")#defineDEFAULT_PORT2302#defineDEFAULT_BUFFER2048#defineDEFAULT_MESSAGE"ThisisatestoftheemergencybroadcastingsystemcharszServerip128,/ServertoconnecttoszMes
2、sage1024;/MessagetosendtoseverintiPort=DEFAULT_PORT;/Portonservertoconnectto/DWORDdwCount=DEFAULT_COUNT;NumberoftimestosendmessageBOOLbSendOnly=FALSE;/Senddataonly;don'treceiveintdirfun();intgetfun();intputfun();intpwdfun();intcdfun();intmdfun();intdelfun();intusafun();voidusage()printf("us
3、age:client-p:x-s:IP-n:x-onn");printf("-p:xRemoteporttosendton");printf("-s:IPServer'sIPaddressorhostnamen");printf("-n:xNumberoftimestosendmessagen");printf("-oSendmessagesonly;don'treceiven");ExitProcess(1);voidValidateArgs(intargc,char*argv)inti
4、;for(i=1;i<argc;i+)if(argvi0='-')|(argvi0='/')switch(tolower(argvi1)case'p':/Remoteportif(strlen(argvi)>3)iPort=atoi(&argvi3);break;case's':/Serverif(strlen(argvi)>3)strcpy(szServerip,&argvi3);break;case'n':/Numberoftimestosendmessageif(strlen
5、(argvi)>3)/dwCount=atol(&argvi3);break;case'o':/Onlysendmessage;don'treceivebSendOnly=TRUE;break;default:usage();break;intmain(intargc,char*argv)WSADATAwsd;SOCKETsClient;charszBufferDEFAULT_BUFFER;intret;/unsignedinti;/intj;structsockaddr_inserver;structhostent*host=NULL;charchoic
6、e5,choice240;/ParsethecommandlineandloadWinsock/argv1="-s:"strcpy(szServerip,&argv13);/ValidateArgs(argc,argv);if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)printf("FailedtoloadWinsocklibrary!n");return1;/strcpy(szMessage,DEFAULT_MESSAGE);/Createthesocket,andattempttoconn
7、ecttotheserver/sClient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(sClient=INVALID_SOCKET)printf("socket()failed:%dn",WSAGetLastError();return1;server.sin_family=AF_INET;server.sin_port=htons(iPort);printf("server.sin_port=%un",server.sin_port);server.sin_addr.s_addr=inet_addr(szS
8、erverip);/Ifthesuppliedserveraddresswasn'tintheform/"aaa.bbb.ccc.ddd"it'sahostname,sotrytoresolveit/if(server.sin_addr.s_addr=INADDR_NONE)host=gethostbyname(szServerip);if(host=NULL)printf("Unabletoresolveserver:%sn",szServerip);return1;CopyMemory(&server.sin_addr,hos
9、t->h_addr_list0,host->h_length);if(connect(sClient,(structsockaddr*)&server,sizeof(server)=SOCKET_ERROR)printf("connect()failed:%dn",WSAGetLastError();return1;/顯示接通信息/for(j=0;j<2;j+)/ret=recv(sClient,szBuffer,DEFAULT_BUFFER,0);if(ret=0)/Gracefulclosereturn0;(printf("recv(
10、)failed:%dn",WSAGetLastError();return0;szBufferret='0'printf("%sn",szBuffer);if(ret<15)(ret=recv(sClient,szBuffer,DEFAULT_BUFFER,0);if(ret=0)/Gracefulclosereturn0;elseif(ret=SOCKET_ERROR)(/printf("recv()failed:%dn",WSAGetLastError();return0;szBufferret='0'
11、printf("%sn",szBuffer);/printf("DEFAULT_BUFFER=%dn",DEFAULT_BUFFER);while(1)(puts("");printf("ftp>");scanf("%s",choice);if(strncmp(choice,"dir",3)=0|strncmp(choice,"DIR",2)=0)(dirfun(sClient);continue;elseif(strncmp(choice,&quo
12、t;pwd",3)=0|strncmp(choice,"PWD",3)=0)(pwdfun(sClient);continue;elseif(strncmp(choice,"?",1)=0)(usafun(sClient);continue;)elseif(strncmp(choice,"quit",4)=0|strncmp(choice,"QUIT",2)=0)(break;)scanf("%s",choice2);if(strncmp(choice,"get",
13、3)=0|strncmp(choice,"GET",3)=0)(getfun(sClient,choice2);continue;)elseif(strncmp(choice,"put",3)=0|strncmp(choice,"PUT",3)=0)(putfun(sClient,choice2);continue;)elseif(strncmp(choice,"cd",2)=0|strncmp(choice,"CD",2)=0)(cdfun(sClient,choice2);continue;
14、)elseif(strncmp(choice,"md",2)=0|strncmp(choice,"MD",2)=0)(mdfun(sClient,choice2);continue;)elseif(strncmp(choice,"del",3)=0|strncmp(choice,"DEL",3)=0)(delfun(sClient,choice2);continue;)/elseputs("輸入錯(cuò)誤,請(qǐng)重新輸入");fflush(stdin);fflush(stdin);printf("
15、;n");printf("n");)closesocket(sClient);WSACleanup();return0;)intdirfun(SOCKETsClient)(intret;char*MSG="dir$"charszBuffer80;strcpy(szMessage,MSG);ret=send(sClient,szMessage,strlen(szMessage),0);if(ret=0)return1;elseif(ret=SOCKET_ERROR)(printf("send()failed:%dn",WSAG
16、etLastError();return1;)/printf("Send%dbytesn",ret);printf("bSendOnly=%dn",bSendOnly);while(!bSendOnly)(/讀取流并顯不/ret=recv(sClient,szBuffer,80,0);/printf("%s",szBuffer);ret=recv(sClient,szBuffer,80,0);if(ret=0)/Gracefulclosereturn1;elseif(ret=SOCKET_ERROR)(printf("rec
17、v()failed:%dn",WSAGetLastError();return1;)szBufferret='0'if(strncmp(szBuffer,"226Close",strlen("226Close")=0)(break;)printf("%s",szBuffer);if(strncmp(szBuffer,"500Syntaxerror",strlen("500Syntaxerror")=0)(break;)return0;)intgetfun(SOCKETs
18、Client,charfilename40)(intret;FILE*fpre;charszBuffer80;szMessage0='0'strcat(szMessage,"get$");strcat(szMessage,"");strcat(szMessage,filename);/printf("MSG4=%cn",szMessage4);/szMessage0='g'szMessage1='e'szMessage2='t'/szMessage4='m'
19、;szMessage5='e'szMessage6='.'szMessage7='t'/szMessage8='x'szMessage9='t'szMessage10='0'ret=send(sClient,szMessage,strlen(szMessage)+1,0);if(ret=0)return1;elseif(ret=SOCKET_ERROR)(printf("send()failed:%dn",WSAGetLastError();return1;)printf(&qu
20、ot;Send%dbytesn",ret);ret=recv(sClient,szBuffer,80,0);/*if(ret=0)/Gracefulclosebreak;elseif(ret=SOCKET_ERROR)(printf("recv()failed:%dn",WSAGetLastError();break;*/szBufferret='0'printf("%sn",szBuffer);if(strncmp(szBuffer,"125Transfering",strlen("125Tran
21、sfering.")=0)(if(fpre=fopen(filename,"w")=NULL)(printf("openerrer");return1;)printf("bSendOnly=%dn",bSendOnly);while(!bSendOnly)(/讀取流并顯不ret=recv(sClient,szBuffer,80,0);if(ret=0)/Gracefulclosereturn1;elseif(ret=SOCKET_ERROR)(printf("recv()failed:%dn",WSAGe
22、tLastError();return1;)szBufferret='0'printf("%s",szBuffer);if(strncmp(szBuffer,"226Transfer",strlen("226Transfer")=0)(break;)if(strncmp(szBuffer,"500Syntaxerror",strlen("500Syntaxerror")=0)(break;)fprintf(fpre,"%s",szBuffer);)printf
23、("%sn",szBuffer);fclose(fpre);)return0;)intputfun(SOCKETsClient,charfilename40)(intret;/inti;FILE*fpse;char"filename;/char*MSG="get0me.txt"charszBuffer80,temp_buffer80;/sprintf(szMessage,"get0","te.txt0");szMessage0='0'strcat(szMessage,"put$&
24、quot;);strcat(szMessage,filename);ret=send(sClient,szMessage,strlen(szMessage)+1,0);return0;elseif(ret=SOCKET_ERROR)(printf("send()failed:%dn",WSAGetLastError();return1;/printf("Send%dbytesn",ret);/filename="me.txt"printf("filename=%sn",filename);if(fpse=fopen
25、(filename,"r")=NULL)(printf("openerrer");return1;else(printf("Thefile%sfound,readytotransfer.n",filename);/i=0;while(fgets(temp_buffer,80,fpse)!=NULL)(sprintf(szBuffer,"%s",temp_buffer);send(sClient,szBuffer,80,0);sprintf(szBuffer,"226Transfercompleted.rn
26、");ret=send(sClient,szBuffer,strlen(szBuffer),0);fclose(fpse);return0;intpwdfun(SOCKETsClient)(intret;char*MSG="pwd$"charszBuffer160;strcpy(szMessage,MSG);ret=send(sClient,szMessage,strlen(szMessage),0);if(ret=0)return1;elseif(ret=SOCKET_ERROR)(printf("send()failed:%dn",WSAG
27、etLastError();return1;printf("Send%dbytesn",ret);printf("bSendOnly=%dn",bSendOnly);while(!bSendOnly)(/讀取流并顯不ret=recv(sClient,szBuffer,160,0);if(ret=0)/Gracefulclosereturn1;elseif(ret=SOCKET_ERROR)(printf("recv()failed:%dn",WSAGetLastError();return1;szBufferret='0
28、9;printf("%sn",szBuffer);if(strncmp(szBuffer,"226Close",strlen("226Close")=0)(break;if(strncmp(szBuffer,"500Syntaxerror",strlen("500Syntaxerror")=0)(break;return0;intcdfun(SOCKETsClient,charpathname40)(intret;szMessage0='0'strcat(szMessage,&q
29、uot;cd$");strcat(szMessage,pathname);ret=send(sClient,szMessage,strlen(szMessage)+1,0);if(ret=0)return1;elseif(ret=SOCKET_ERROR)(printf("send()failed:%dn",WSAGetLastError();return1;printf("Send%dbytesn",ret);return0;intmdfun(SOCKETsClient,charpathname20)(intret;charszBuffer1
30、60;char*MSG="md$"szMessage0='0'strcat(szMessage,"md$");strcat(szMessage,"");strcat(szMessage,pathname);/strcpy(szMessage,MSG);ret=send(sClient,szMessage,strlen(szMessage)+1,0);if(ret=0)return1;elseif(ret=SOCKET_ERROR)(printf("send()failed:%dn",WSAGetLa
31、stError();return1;)printf("Send%dbytesn",ret);while(!bSendOnly)(/讀取流并顯不ret=recv(sClient,szBuffer,80,0);if(ret=0)/Gracefulclosereturn1;elseif(ret=SOCKET_ERROR)(printf("recv()failed:%dn",WSAGetLastError();return1;)szBufferret='0'printf("%s",szBuffer);if(strncmp(sz
32、Buffer,"226Close",strlen("226Close")=0)(break;)if(strncmp(szBuffer,"500Syntaxerror",strlen("500Syntaxerror")=0)(break;)return0;)intdelfun(SOCKETsClient,charname20)(intret;charszBuffer80;szMessage0='0'strcat(szMessage,"del$");strcat(szMessage,
33、name);ret=send(sClient,szMessage,strlen(szMessage)+1,0);if(ret=0)return1;elseif(ret=SOCKET_ERROR)(printf("send()failed:%dn",WSAGetLastError();return1;)printf("Send%dbytesn",ret);while(!bSendOnly)(ret=recv(sClient,szBuffer,80,0);if(ret=0)/Gracefulclosereturn1;elseif(ret=SOCKET_ERR
34、OR)(printf("recv()failed:%dn",WSAGetLastError();return1;)szBufferret='0'if(strncmp(szBuffer,"delok",strlen("delok")=0)(printf("del%sokn",name);break;)printf("%s",szBuffer);if(strncmp(szBuffer,"500Syntaxerror",strlen("500Syntaxe
35、rror")=0)(break;)intusafun()(puts("");puts("get:取遠(yuǎn)方的一個(gè)文件");puts("put:傳給遠(yuǎn)方一個(gè)文件");puts("pwd:顯示遠(yuǎn)主當(dāng)前目錄");puts("dir:列出遠(yuǎn)方當(dāng)前目錄");puts("md:在遠(yuǎn)方新建文件夾");puts("cd:改變遠(yuǎn)方當(dāng)前目錄");puts("?:顯示你提供的命令");puts("quit:退出返回");return
36、0;)/intquit()/*server.c*/#include<stdio.h>#include<winsock.h>#include<stdlib.h>#pragmacomment(lib,"ws2_32.lib")WSADATAwsd;charsbuffer80,rbuffer80;/sendandreceivebuffersintn,bytes;/countersSOCKETnewsocket,ns_data;structsockaddr_inremoteaddr;/remoteaddr_data;intport_connect
37、=0;/portconnectflagcharpath80=""charorder100=""/SOCKETs_data_port;intsy_error=1;/useforindicateSyntaxerror/serverfunctionsintsdirfun(SOCKETnewsocket);intsgetfun(SOCKETnewsocket);intsputfun(SOCKETnewsocket);intspwdfun(SOCKETnewsocket);intscdfun(SOCKETnewsocket);intsmdfun(SOCKETnew
38、socket);intsdelfun(SOCKETnewsocket);voidHandleError(char*func);/serverfunctionsend/MAINintmain(intargc,char*argv口)portstructsockaddr_inlocaladdr;/localaddressstructureSOCKETs;/s_data;/welcomesocketandwelcomesocketfordataconnection,andconnectionforconnecttoclientintaddr_inlen;/addresslenghtvariableif
39、(WSAStartup(MAKEWORD(2,2),&wsd)!=0)WSACleanup();printf("WSAStartupfailedn");memset(&localaddr,0,sizeof(localaddr);/clearlocaladdrs=socket(PF_INET,SOCK_STREAM,0);if(s<0)printf("socketfailedn");localaddr.sin_family=AF_INET;if(argc=2)localaddr.sin_port=htons(u_short)atoi(
40、argv1);elselocaladdr.sin_port=htons(2302);localaddr.sin_addr.s_addr=INADDR_ANY;if(bind(s,(structsockaddr*)(&localaddr),sizeof(localaddr)<0)printf("Bindfailed!n");)/INFINITELOOPwhile(1)/whileloop1/LISTENlisten(s,3);%daddr_inlen=sizeof(remoteaddr);/ACCEPTmainconnection(controlconnecti
41、on)newsocket=accept(s,(structsockaddr*)(&remoteaddr),&addr_inlen);if(newsocket=INVALID_SOCKET)break;printf("connectedto%satportn",inet_ntoa(remoteaddr.sin_addr),ntohs(localaddr.sin_port);/Respondwithwelcomemessage,FTPclientrequiresthosesprintf(sbuffer,"200Welcomern");byte
42、s=send(newsocket,sbuffer,strlen(sbuffer),0);sprintf(sbuffer,"530Loginrn");bytes=send(newsocket,sbuffer,strlen(sbuffer),0);/INFINITELOOPwhile(1)/whileloop2n=0;sy_error=1;while(1)/whileloop3/RECEIVEbytes=recv(newsocket,&rbuffern,1,0);printf("rbuffer%d=%cn",n,rbuffern);if(bytes&
43、lt;0)|(bytes=0)break;if(rbuffern='$')(rbuffern='0'break;if(rbuffern!='r')n+;/endofwhileloop3if(bytes<0)|(bytes=0)break;printf("#TheServerreceives:#'%s'fromclientn",rbuffer);/THEFTPCOMMANDSHERE/LISTif(strncmp(rbuffer,"dir",3)=0)(sdirfun(newsocket
44、);/當(dāng)前目錄if(strncmp(rbuffer,"pwd",3)=0)(spwdfun(newsocket);/改變目錄if(strncmp(rbuffer,"cd",2)=0)(scdfun(newsocket);/GETif(strncmp(rbuffer,"get",3)=0)(sgetfun(newsocket);/PUTif(strncmp(rbuffer,"put",3)=0)(sputfun(newsocket);/MDif(strncmp(rbuffer,"md",2)=0)
45、(smdfun(newsocket);)if(strncmp(rbuffer,"del",3)=0)(sdelfun(newsocket);)/QUITif(strncmp(rbuffer,"quit",4)=0)(printf("quit'n");sprintf(sbuffer,"221Byebyern");bytes=send(newsocket,sbuffer,strlen(sbuffer),0);sy_error=0;break;)/Syntaxerrorif(sy_error=1)(printf(
46、"commandunrecognized,non-implemented!n");sprintf(sbuffer,"500Syntaxerror.n");bytes=send(newsocket,sbuffer,strlen(sbuffer),0);)/endofwhileloop2/CLOSECONTROLSOCKETclosesocket(newsocket);controlprintf("disconnectedfrom%satport%d,closesocket.n",inet_ntoa(remoteaddr.sin_addr
47、),ntohs(localaddr.sin_port);/endofwhileloop1/CLOSEWELCOMESOCKETclosesocket(s);printf("Welcomesocketsclose");return0;intsdirfun(SOCKETnewsocket)chartemp_buffer80;printf("Equivalenttodirn");order0='0'strcat(order,"dir");strcat(order,path);strcat(order,">tm
48、p.txt");system(order);FILE*fin;fin=fopen("tmp.txt","r");sprintf(sbuffer,"125Transfering.rn");bytes=send(newsocket,sbuffer,strlen(sbuffer),0);while(fgets(temp_buffer,80,fin)!=NULL)sprintf(sbuffer,"%s",temp_buffer);/if(port_connect=0)send(newsocket,sbuffer,
49、strlen(sbuffer),0);fclose(fin);sprintf(sbuffer,"226Transfercompleted.rn");bytes=send(newsocket,sbuffer,strlen(sbuffer),0);system("deltmp.txt");/CLOSEthens_dataSOCKETordataportSOCKETif(port_connect=0)closesocket(ns_data);sprintf(sbuffer,"226Closethedatasocket.rn");bytes=
50、send(newsocket,sbuffer,strlen(sbuffer),0);ns_data=socket(AF_INET,SOCK_STREAM,0);sy_error=0;return0;intsgetfun(SOCKETnewsocket)printf("RETRmode.rn");inti=4,k=0;charfilename20,temp_buffer80;/identifythefilenamefromrbufferaftertheword"RETR'while(1)/whileloop4/RECEIVEbytes=recv(newsoc
51、ket,&rbufferi,1,0);printf("rbufferi=%cn",rbufferi);if(bytes<0)|(bytes=0)break;filenamek=rbufferi;if(rbufferi='0')/*endonLF*/filenamek='0'break;if(rbufferi!='r')i+;k+;/*ignoreCR's*/endofwhileloop4order0='0'strcat(order,path);if(strlen(path)>0)st
52、rcat(order,"");strcat(order,filename);char*p_filename=order;FILE*fp;if(fp=fopen(p_filename,"r")=NULL)sprintf(sbuffer,"Sorry,cannotopen%s.Pleasetryagain.rn",filename);bytes=send(newsocket,sbuffer,strlen(sbuffer),0);sprintf(sbuffer,"226Transfercompleted.rn");byt
53、es=send(newsocket,sbuffer,strlen(sbuffer),0);return1;elseprintf("Thefile%sfound,readytotransfer.n",filename);sprintf(sbuffer,"125Transfering.rn");bytes=send(newsocket,sbuffer,strlen(sbuffer),0);while(fgets(temp_buffer,80,fp)!=NULL)sprintf(sbuffer,"%s",temp_buffer);/if(p
54、ort_connect=0)/endofwhilefclose(fp);sprintf(sbuffer,"226Transfercompleted.rn");bytes=send(newsocket,sbuffer,strlen(sbuffer),0);sy_error=0;return0;intsputfun(SOCKETnewsocket)printf("Equivalenttoput.n");inti=4,k=0;charfilename20;/identifythefilenamefromrbufferaftertheword"RETR
55、'while(1)bytes=recv(newsocket,&rbufferi,1,0);if(bytes<0)|(bytes=0)break;filenamek=rbufferi;if(rbufferi='0')/*endonLF*/filenamek='0'break;if(rbufferi!='r')i+;k+;/*ignoreCR's*/endofwhileorder0='0'strcat(order,path);if(strlen(path)>0)strcat(order,"
56、");strcat(order,filename);printf("filename=%s,",order);char*p_filename=order;FILE*fpse;if(fpse=fopen(order,"w")=NULL)printf("openerrer");return1;)else(printf("Thefile%sfound,readytotransfer.n",filename);while(1)(/讀取流并顯不intret;ret=recv(newsocket,rbuffer,80
57、,0);if(ret=0)/Gracefulclosereturn0;elseif(ret=SOCKET_ERROR)(printf("recv()failed:%dn",WSAGetLastError();return0;)if(strncmp(rbuffer,"226Transfer",strlen("226Transfer")=0)(break;)fprintf(fpse,"%s",rbuffer);)printf("RBUFFER=%s",rbuffer);fclose(fpse);)s
58、y_error=0;return0;)intspwdfun(SOCKETnewsocket)(printf("Equivalenttopwdn");/order0='0'/strcat(order,"dir");/strcat(order,path);/strcat(order,);system("cd>tmp.txt");FILE*fin;fin=fopen("tmp.txt","r+");sprintf(sbuffer,"125Transfering.rn&q
59、uot;);bytes=send(newsocket,sbuffer,strlen(sbuffer),0);chartemp_buffer160;while(fgets(temp_buffer,80,fin)!=NULL)(temp_bufferstrlen(temp_buffer)-1='0'printf("temp_buffer=%s",temp_buffer);/目錄判定if(path0!='0')sprintf(sbuffer,"%s%s",temp_buffer,path);elsesprintf(sbuffer
60、,"%s",temp_buffer);/if(port_connect=0)send(ns_data,sbuffer,strlen(sbuffer),0);send(newsocket,sbuffer,strlen(sbuffer),0);fclose(fin);sprintf(sbuffer,"226Transfercompleted.rn");bytes=send(newsocket,sbuffer,strlen(sbuffer),0);system("deltmp.txt");/CLOSEthens_dataSOCKETordataportSOCKETif(port_
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)互聯(lián)網(wǎng)打車行業(yè)市場(chǎng)現(xiàn)狀及未來(lái)發(fā)展前景預(yù)測(cè)分析報(bào)告
- 合同的協(xié)議書買卡
- 2025版標(biāo)準(zhǔn)房屋買賣合同模板參考
- 2025年計(jì)算機(jī)二級(jí)Msoffice解題思路的探索
- 中級(jí)社會(huì)工作者學(xué)習(xí)路徑規(guī)劃的試題及答案
- 全面掌握2025年網(wǎng)絡(luò)規(guī)劃設(shè)計(jì)師考試試題及答案
- 掌握軟件評(píng)測(cè)師考試核心要素試題及答案
- 增強(qiáng)應(yīng)對(duì)能力的多媒體設(shè)計(jì)師試題及答案
- 系統(tǒng)集成中的技術(shù)選型試題及答案
- 中級(jí)社會(huì)工作者實(shí)踐案例試題及答案
- 環(huán)衛(wèi)人員消防培訓(xùn)課件
- 藍(lán)色簡(jiǎn)約風(fēng)美國(guó)加征關(guān)稅
- 規(guī)范種植品種管理制度
- 超級(jí)電容器知識(shí)簡(jiǎn)介
- 廣東省深圳市羅湖區(qū)2025年高三第三次調(diào)研測(cè)試英語(yǔ)試題試卷含解析
- 數(shù)學(xué)建模在初中數(shù)學(xué)教學(xué)中的應(yīng)用
- 2025年山東東營(yíng)市事業(yè)單位上半年統(tǒng)考(7.26)歷年自考難、易點(diǎn)模擬試卷(共500題附帶答案詳解)
- 投標(biāo)標(biāo)前協(xié)議書范本
- 注塑領(lǐng)班工作總結(jié)
- 2025年中國(guó)經(jīng)濟(jì)信息社福建分公司招聘筆試參考題庫(kù)含答案解析
- 2025年度食用菌產(chǎn)業(yè)園區(qū)公共設(shè)施運(yùn)營(yíng)管理合同3篇
評(píng)論
0/150
提交評(píng)論