计算机专业课程设计方案报告.doc
《计算机专业课程设计方案报告.doc》由会员分享,可在线阅读,更多相关《计算机专业课程设计方案报告.doc(33页珍藏版)》请在咨信网上搜索。
课 程 设 计 课程名称______________________ 题目名称______________________ 学生学院______________________ 专业班级______________________ 学 号______________________ 学生姓名______________________ 指引教师______________________ 200 年 月 日 摘要 本课程设计阐明书重要阐明了在windows下如何用c语言编写设计ftp服务器和客户端基本办法及其实现。包括了TCP/IP合同基本通信原理,Winsock编程基本原理以及ftp工作原理。正文某些是程序设计详细内容及其源代码,最后是报告反思及总结。 核心词:TCP/IP,Winsock,ftp 摘要 1 1.绪 论 1 1.1设计目 1 1.2设计规定 1 1.21计算机网络实验环境建立在TCP/IP 网络体系构造之上。 1 1.22详细规定 1 1.3设计准备 2 1.4设计方案 2 2.开发环境简介 2 3.有关原理分析理解 3 3.1TCP/IP原理 3 3.11网络层合同 3 3.12应用层合同 3 3.2Winsock编程原理 3 3.23Winsock编程模型: 4 数据报套接字编程模型 4 Winsock I/O模型 5 3.3TP工作原理 5 3.4Winsock API基本函数简介 5 (1)WSAStartup()函数和WSACleanup()函数 5 (2)socket()函数 6 (3)bind( ) 函数 6 (4)listen( )函数 6 (5)accept( )函数 6 (6)connect( )函数 6 (7)closesocket( )函数 7 4.总体设计 7 4.1理解Winsock与操作系统关系 7 4.2实现功能流程图 8 5.详细设计 8 5.1文献传播源程序代码 8 (1)客户端client程序代码 8 (2)、服务器端server程序代码 14 六、系统实现环节 19 七、总结结论(心得体会) 21 参照文献: 22 1.绪 论 1.1设计目 本设计旨在运用原始socket简朴实现FTP(File Transfer Protocol,文献传播合同)客户端和服务器端程序,可以实现get、put、pwd、dir、cd等基本交互命令。 通过完毕此设计,理解Winsock API函数调用办法和普通网络应用程序编程办法,理解FTP合同,掌握C语言设计FTP合同软件基本技术,为将来开发其她通信合同软件打下坚实基本。 1.2设计规定 1.21计算机网络实验环境建立在TCP/IP 网络体系构造之上。 各计算机除了安装TCP/IP 软件外,还安装了TCP/IP 开发系统。实验室各计算机具备Windows环境中套接字socket 编程接口功能,可为顾客提供全网范畴进程通信功能。本实验规定学生运用这些功能,设计和实现一种简朴文献传送合同。 1.22详细规定 用socket 编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c),该程序应能实现下述命令功能: get:取远方一种文献 put:传给远方一种文献 pwd:显示远主当前目录 dir:列出远方当前目录 cd :变化远方当前目录 ? :显示你提供命令 quit :退出返回 1.3设计准备 装有Windows操作系统PC机、Visual C++ 6.0编译器或VS编译器 1.4设计方案 1.服务器端调用socketaccept()办法,等待客户端联接。 2.客户端发送需要从服务端获得文献夹途径给服务器端。 3.服务器端依照客户端发来途径遍历整个途径下文献及文献夹,并将需要传送到文献记录全途径记录到一种String类型数组中,并将文献个数发送给客户端。 4.客户端接受服务器端发来文献个数,并向服务器端发送关闭联接祈求,并关闭客户端连接。 5.服务器端收取关闭连接祈求,将socket关闭,进入传播文献循环中。 6.服务器端调用socketaccept()办法,等待客户端联接。 7.客户端依照刚才获得要传播文献数,进行循环获取文献,记得每次取完文献要关闭socket连接,这样就不会将各种文献写入到同一种文献中。 2.开发环境简介 VC6.0编程环境:一方面建一种工程,填入文献名,点击下一步,浮现要创立文献夹名,填上点击下一步,完毕建立工程。然后再点击新建菜单,新建一种C/C++source文献,点击下一步,完毕建立过程,然后在窗口中写入源代码,执行即可。 3.有关原理分析理解 3.1TCP/IP原理 TCP合同和IP合同指两个用在Internet上网络合同(或数据传播办法)。它们分别是传播控制合同和互连网合同。这两个合同属于众多TCP/IP合同组中一某些。 TCP/IP合同组中合同保证Internet上数据传播,提供了几乎当前上网所用到所有服务。这些服务涉及:电子邮件传播 ,文献传播 , 新闻组发布 , 访问万维网 在TCP/IP合同组分两种合同:网络层合同和应用层合同 3.11网络层合同:网络层合同管理离散计算机间数据传播。这些合同顾客注意不到,是在系统表层如下工作。例如,IP合同为顾客和远程计算机提供了信息包传播办法。它是在许多信息基本上工作,例如说是机器IP地址。在机器IP地址和其他信息基本上,IP保证信息包能对的地到达目机器。通过这一过程,IP和其他网络层合同共同用于数据传播。如果没有网络工具,顾客就看不到在系统里工作IP。 3.12应用层合同: 相反地,应用层合同顾客是可以看得到。例如,文献传播合同(FTP)顾客是看得到。顾客为了传播一种文献祈求一种和其他计算机连接,连接建立后,就开始传播文献。在传播时,顾客和远程计算机互换一某些是能看到。 TCP/IP通过使用合同栈工作。这个栈是所有用来在两台机器间完毕一种传播所有合同几种集合。(这也就是一种通路,数据通过它从一台机器到另一台机器。)栈提成层,与这里关于是五个层。栈每一层都能从相邻层中接受或发送数据。每一层都与许多合同相联系。在栈每一层,这些合同都在起作用。本章下一某些将分析这些服务,以及它们在栈中是如何联系。同步也分析一下它们功能,它们提供服务和与安全性关系。 3.2Winsock编程原理 通过Winsock可实现点对点或广播通信程序,实际这两者之间区别不大,编程时其程序流程所用代码几乎相似,不同地方在于目的地址选取不同。 由于Winsock服务是以动态链接库Winsock DLL形式实现,因而先调用 1、WSAStartup对Winsock DLL进行初始化 2、应用程序关闭套接字后,还应调用WSACleanup终结对Winsock DLL使用 3.23Winsock编程模型: 流套接字编程模型: 1 .服务器进程创立套接字 socket 2 .将本地地址绑定到所创立套接字 bind 3 .将套接字置入监听模式并准备接受连接祈求 listen,accept 4 .客户进程调用socket函数创立客户端套接字 5 .客户向服务进程发出连接祈求 connect 6 .当服务器接受到客户祈求,阻塞accept进程,生成新一种新套接字与客户套接字建立连接,并向客户端返回接受信号 7 .客户套接字收到服务器接受信号,表达连接建立成功,开始用 send,recv进行收发数据 8 关闭套接字 先用 shutdown 再用 closesocket 数据报套接字编程模型: ② 服务器用socket创立,用bind绑定 ③ 用readfrom从网络上接受,收不到进入阻塞 ④ 客户端也用socket ,bind绑定 ⑤ 客户端用 sendto发送数据 ⑥ 服务器端接受数据,用sendto进行响应 ⑥ 数据发送完两者调用closesocket进行套接字释放 Winsock I/O模型: 阻塞模式:始终等待下去,不会及时返回 非阻塞模式:无论何都会返回关交出程序控制权 3.3TP工作原理 文献传播合同是从一种系统向另一种系统传递文献原则办法。它目的在RFC 0765中写得很清晰。 FTP目的 1)增进文献和程序共享 2)勉励间接和含蓄使用远程计算机 3)使顾客不必面对主机间使用不同文献存储系统 4)有效和可靠地传播文献。FTP,尽管顾客可以直接通过终端来使用,是设计成让别程序使用。 FTP文献传播应用在客户/服务环境。祈求机器启动一种FTP客户端软件。这就给目的文献服务器发出了一种祈求。典型地,这个规定被送到端口21。一种连接建立起来后,目的文献服务器必要运营一种FTP服务软件。FTPD是原则FTP服务daemon。它功能很简朴:回答inetd收到连接祈求,并满足这些要传播文献祈求。这个daemon在许多发行版UNIX中是个原则。FTPD等待一种连接祈求。当这样一种祈求到达时,FTPD祈求顾客登录。顾客提供它合法登录名和口令或匿名登录。一旦登录成功,顾客可如下载文献了。在某些状况下,如果服务器安全容许,顾客可以上载文献。 3.4Winsock API基本函数简介 (1)WSAStartup()函数和WSACleanup()函数 由于Winsock 2提供API服务是以动态链接库ws2_32.dll实现,因此必要先调用WSAStartup() 函数对ws2_32.dll进行加载初始化,协商Winsock版本支持,并分派必要资源。在应用程序关闭套接字后,还应调用WSACleanup( )函数来终结和卸载动态链接库ws2_32.dll,释放资源。 (2)socket()函数 服务进程和客户进程在通信前必要创立各自套接字,然后才干用相应套接字进行发送、接受操作,实现数据传播。服务进程总是先于客户进程启动,服务进程和客户进程调用socket() 函数创立套接字。 (3)bind( ) 函数 当用socket( )创立套接字后,它便存在于一种名字空间(地址族)中,但并未赋名。bind ( )函数通过给一种未命名套接字分派一种本地名字(主机地址/端标语)来为套接字建立本地捆绑。客户端普通隐式地向操作系统祈求一种随机未使用过暂时端标语,跟自己IP地址一起,与所创立套接字建立联系,由于该暂时端标语客户端程序事先是不拟定,因而不显式地使用绑定函数。 (4)listen( )函数 调用listen( )函数对服务器上套接字启动监听,即容许客户连接祈求开始排队。 (5)accept( )函数 服务器设立监听工作方式后,通过调用 accept( ) 函数使套接字等待接受客户连接。如果已有连接祈求到来,该函数会返回一种新套接字描述符,它相应于已经接受那个客户端连接。对于该客户机后续所有操作,都应使用这个新套接字。至于本来那个监听套接字,它依然用于接受其她客户机连接,继续处在监听模式。 (6)connect( )函数 客户端运用 connect( ) 函数和服务器建立一种端到端连接。 (7)closesocket( )函数 网络通信任务完毕后,运用本函数释放套接字占用所有资源。 4.总体设计 4.1理解Winsock与操作系统关系 4.2实现功能流程图 5.详细设计 5.1文献传播源程序代码 (1)客户端client程序代码 #include "Winsock.h" #include "windows.h" #include "stdio.h" #include "time.h" #include <iostream.h> #define RECV_PORT 3312 #define SEND_PORT 4302 #pragma comment(lib,"wsock32.lib") SOCKET sockclient; char filename[20]; //文献名 sockaddr_in ServerAddr; //服务器地址 char rbuff[1024]; //接受缓冲区 char sbuff[1024]; //发送缓冲区 char InputIP[20]; //存储输入服务器IP void help() { //解决help命令 cout<<" 欢迎进入迷你FTP协助菜单 "<<endl <<" * * * * * * * * * * * * * * * * * * * * * "<<endl <<" 1.get....................下载(接受)文献 "<<endl <<" get用法:get 文献名 "<<endl<<endl <<" 2.put....................上传(发送)文献 "<<endl <<" put用法:put 文献名 "<<endl <<" 3.pwd..........显示当前文献夹绝对途径 "<<endl <<" 4.dir............显示远方当前目录文献 "<<endl<<endl <<" 5.cd.............变化远方当前目录和途径 "<<endl <<" cd用法(进入下级目录):cd 途径名 "<<endl <<" cd用法(进入上级目录):cd .. "<<endl<<endl <<" 6.?或者help................进入协助菜单 "<<endl <<" 7.quit..........................退出FTP "<<endl <<" * * * * * * * * * * * * * * * * * * * * * "<<endl; } /************************dir:列出远方当前目录**********************/ void list(SOCKET sockfd) { int nRead; while(true) { nRead=recv(sockclient,rbuff,1024,0); //recv函数通过sockclient套接口接受数据存入rbuff缓冲区,返回接受到字节数 if(nRead==SOCKET_ERROR) { printf("read response error!\n"); exit(1); } if(nRead==0)//数据读取结束 break; //显示数据 rbuff[nRead]='\0'; printf("%s",rbuff); } } /*********************** put:传给远方一种文献***************************/ int SendFile(SOCKET datatcps,FILE* file) { printf(" sending file data.."); for(;;) //从文献中循环读取数据并发送客户端 { int r=fread(sbuff,1,1024,file);//fread函数从file文献读取1个1024长度数据到sbuff,返回成功读取元素个数 if(send(datatcps,sbuff,r,0)==SOCKET_ERROR) { printf("lost the connection to client!\n"); closesocket(datatcps); return 0; } if(r<1024) //文献传送结束 break; } closesocket(datatcps); printf("done\n"); return 1; } DWORD StartSock() //启动winsock { WSADATA WSAData; char a[20]; memset(a,0,20); if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0)//加载winsock版本 { printf("sock init fail!\n"); return (-1);} if(strncmp(InputIP,a,20)==0) { printf("请输入连接主机IP:"); scanf("%s",&InputIP); } //设立地址构造 ServerAddr.sin_family=AF_INET;//AF_INET表达使用IP地址族 ServerAddr.sin_addr.s_addr=inet_addr(InputIP);//指定服务器IP ServerAddr.sin_port=htons(RECV_PORT);//设立端标语 return(1); } //创立套接字 DWORD CreateSocket() { sockclient=socket(AF_INET,SOCK_STREAM,0);//当socket函数成功调用时返回一种新SOCKET(Socket Descriptor) if(sockclient==SOCKET_ERROR) {printf("sockclient create fail!\n"); WSACleanup(); return(-1); } return(1); } DWORD CallServer() //发送连接祈求 { CreateSocket(); if(connect(sockclient,(struct sockaddr*)&ServerAddr,sizeof(ServerAddr)) ==SOCKET_ERROR) //connect函数创立与指定外部端口连接 { printf("Connect fail \n"); memset(InputIP,0,20); return(-1); } return(1); } DWORD TCPSend(char data[]) //发送命令 { int length; length=send(sockclient,data,strlen(data),0);//send函数通过sockclient接口发送data里面数据,发送成功返回发送字节数 if(length<=0) { printf("send data error !\n"); closesocket(sockclient); WSACleanup(); return(-1); } return(1); } int main() { char messge1[10]; //定义输入要解决文献名 char messge2[20]; //定义输入要解决文献名 char order[30]; //输入命令 order[0]='\0'; char buff[80]; //用以存储通过字串格式化order FILE *fd; //File合同重要用于访问本地计算机中文献,fd指针指向要访问目的文献 FILE *fd2; int count; int sin_size=sizeof(ServerAddr); StartSock(); if(CallServer()==-1) return main(); //发送连接祈求失败,返回主函数 printf("\n请输入命令(输入?或help进入协助菜单):\n"); memset(buff,0,80); //清空数组 memset(messge2,0,20); memset(order,0,30); memset(messge1,0,10); memset(rbuff,0,1024); memset(sbuff,0,1024); scanf("%s",&messge1); if(strncmp(messge1,"get",3)==0) scanf("%s",&messge2); if(strncmp(messge1,"put",3)==0) scanf("%s",&messge2); if(strncmp(messge1,"cd",2)==0) scanf("%s",&messge2); strcat(order,messge1); //把messge1加在order末尾 strcat(order," "); //命令中间空格 strcat(order,messge2); //把messge2加在order末尾 sprintf(buff,order); //把调节格式order存入buff //help和? if(strncmp(messge1,"help",4)==0) { help(); } if(strncmp(messge1,"?",1)==0){ help(); } if(strncmp(messge1,"quit",4)==0) { printf(" 欢迎再次进入迷你FTP,谢谢使用!\n"); closesocket(sockclient); WSACleanup(); return 0; } TCPSend(buff);//发送buff里面数据 recv(sockclient,rbuff,1024,0); printf(rbuff); if(strncmp(rbuff,"get",3)==0) //get { fd=fopen(messge2,"wb");//使用二进制方式,打开文献,wb只写打开或新 建一种二进制文献;只容许写数据。 if(fd==NULL) { printf("open file %s for weite failed!\n",messge2); return 0; } while((count=recv(sockclient,rbuff,1024,0))>0) { fwrite(rbuff,sizeof(rbuff),count,fd); } //把count个数据长度为size0f()数据从 rbuff输入到fd指向目的文献 fclose(fd); //关闭文献 } if(strncmp(rbuff,"put",3)==0) //put { strcpy(filename,rbuff+9); fd2=fopen(filename,"rb");//rb读写打开一种二进制文献,只容许读写数据。 if(fd2) { if(!SendFile(sockclient,fd2)){ printf("send failed!"); return 0; } fclose(fd2);}//关闭文献 else//打开文献失败 { strcpy(sbuff,"can't open file!\n"); if(send(sockclient,sbuff,1024,0)) return 0; } } if(strncmp(rbuff,"dir",3)==0) //dir { printf("\n"); list(sockclient); //列出接受到列表内容 } if(strncmp(rbuff,"pwd",3)==0) { list(sockclient); //列出接受到内容--绝对途径 } if(strncmp(rbuff,"cd",2)==0){ } //cd closesocket(sockclient); //关闭连接 WSACleanup(); //释放Winsock return main(); } (2)、服务器端server程序代码 #include "Winsock.h" #include "windows.h" #include "stdio.h" #define RECV_PORT 3312 #define SEND_PORT 4302 #pragma comment(lib,"wsock32.lib") SOCKET sockclient,sockserver; sockaddr_in ServerAddr;//服务器地址 sockaddr_in ClientAddr;//客户端地址 /***********************全局变量***********************/ int Addrlen;//地址长度 char filename[20];//文献名 char order[10];//命令 char rbuff[1024];//接受缓冲区 char sbuff[1024];//发送缓冲区 DWORD StartSock() //初始化winsock { WSADATA WSAData; if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0) { printf("socket init fail!\n"); return (-1); } return(1); } DWORD CreateSocket() { sockclient=socket(AF_INET,SOCK_STREAM,0); if(sockclient==SOCKET_ERROR) { printf("sockclient create fail !\n"); WSACleanup(); return(-1); } ServerAddr.sin_family=AF_INET; ServerAddr.sin_addr.s_addr=htonl(INADDR_ANY); ServerAddr.sin_port=htons(RECV_PORT); if(bind(sockclient,(struct sockaddr FAR *)&ServerAddr,sizeof(ServerAddr))==SOCKET_ERROR) { //bind函数将套接字和地址构造绑定 printf("bind is the error"); return(-1); } return (1); } int SendFileRecord(SOCKET datatcps,WIN32_FIND_DATA *pfd) //用来发送当前文献记录 { char filerecord[MAX_PATH+32]; FILETIME ft; //文献建立时间 FileTimeToLocalFileTime(&pfd->ftLastWriteTime,&ft); SYSTEMTIME lastwtime; //SYSTEMTIME系统时间数据构造 FileTimeToSystemTime(&ft,&lastwtime); char *dir=pfd->dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY?"<DIR>":" "; sprintf(filerecord,"%04d-%02d-%02d %02d:%02d %5s %10d %-20s\n", lastwtime.wYear, lastwtime.wMonth, lastwtime.wDay, lastwtime.wHour, lastwtime.wMinute, dir, pfd->nFileSizeLow, pfd->cFileName); if(send(datatcps,filerecord,strlen(filerecord),0)==SOCKET_ERROR) { //通过datatcps接口发送filerecord数据,成功返回发送字节数 printf("Error occurs when sending file list!\n"); return 0; } return 1; } int SendFileList(SOCKET datatcps) { HANDLE hff;//建立一种线程 WIN32_FIND_DATA fd; //搜索文献 hff=FindFirstFile("*",&fd);//可以通过FindFirstFile()函数依照当前文献存储途径查找该文献来把待操作文献有关属性读取到WIN32_FIND_DATA构造中去: if(hff==INVALID_HANDLE_VALUE)//发生错误 { const char *errstr="can't list files!\n"; printf("list file error!\n"); if(send(datatcps,errstr,strlen(errstr),0)==SOCKET_ERROR) { printf("error occurs when senging file list!\n"); } closesocket(datatcps); return 0; } BOOL fMoreFiles=TRUE; while(fMoreFiles) {//发送此项文献信息 if(!SendFileRecord(datatcps,&fd)) { closesocket(datatcps); return 0; } //搜索下一种文献 fMoreFiles=FindNextFile(hff,&fd); } closesocket(datatcps); return 1; } int SendFile(SOCKET datatcps,FILE* file) { printf(" sending file data.."); for(;;) //从文献中循环读取数据并发送客户端 { int r=fread(sbuff,1,1024,file);//把file里面内容读到sbuff缓冲区 if(send(datatcps,sbuff,r,0)==SOCKET_ERROR) { printf("lost the connection to client!\n"); closesocket(datatcps); return 0; } if(r<1024)//文献传送结束 break; } closesocket(datatcps); printf("done\n"); return 1; } //连接 DWORD ConnectProcess() { Addrlen=sizeof(sockaddr_in); if(listen(sockclient,5)<0) { printf("Li- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机专业 课程设计 方案 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文