欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Linux环境下基于TCP的Socket编程浅析.pdf

    • 资源ID:70021208       资源大小:368.76KB        全文页数:5页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Linux环境下基于TCP的Socket编程浅析.pdf

    L i n u x 环境下基于T C P 的S o c k e t 编程浅析吴佩贤(绍兴文理学院计算机系浙江绍兴3 1 2 0 0 0)摘要:S o c k e t 适用于同一台计算机上的进程间通信,同时也适用于网络环境中的进程间通信。他已成为当前许多操作系统的网络A P I,也是网络操作系统中必不可少的基础功能。因特网为网络中的应用提供了2 种类型的服务:由T C P 协议提供的面向连接服务和由U D P 协议提供的无连接服务。随着L i n u x 操作系统的不断推广,L i n u x 环境下的S o c k e t 开发和研究一直是人们关注的热点。文章介绍了L i n u x 平台下的S o c k e t 及其在T C P 协议下的编程原理,并通过一个用J a v a 编写的基于T C P 的客户服务器程序,描述了网络中不同主机上的两个进程之间的S o c k e t 通信机制。关键词:S o c k e t T C P I P;客户机服务器;进程;J a v a中图分类号:T P 3 1 6文献标识码:B文章编号:1 0 0 4 3 7 3 X(2 0 0 5)1 6 一0 5 3 一0 3A n a I y s i so fS o c k e tP r o g r a m m i n gT C P b a s e do nL i n u xW UP e i x i a n(C o m p u t e rS c i e 眦eD e p a r t m e n t S h a o x i n gU n i v e r s i t y,S h a o x i“g 3 1 2 0 0 0,C h i n a)A b s t r a c t:s o c k e ti ss u i t a b l ef o rc o m m u n i c a t i o nb e t w e e nt w op r o c e s s e sn o to n l yf r o monec o m p u t e rb u ta l s of r o mn e t w o r k N o wS 0 c k e ti sa na v a i l a b l en e t w o r k A P Io fm a n yO S,a tt h es a m et i m e,i ti sonen e c e s s a r yp a r to fn e t w o r k O S I n t e r n e tp r o v i d e sc o n n e c t i o n o r i e n t e ds e r v i c e(T C P b a s e d)a n dc o n n e c t i o n l e s ss e r v i c e(U D P b a s e d)S o c k e td e v e l o p m e n ta n ds t u d y i n go nL i n u xa r ea l w a y sc o n c e r n e dw h i l eL i n u xi si n n o v a t e do na n do n T h ep a p e ri n t r o d u c e st h eS o c k e ta n di t7sp r o g r a m m i n gp r i n c i p l eb a s e do nT C Pi nL i n u xe n v i r o n m e n t B yu s i n gaT C P b a s e dc l i e n t s e r v e rp r o g r a mw h i c hi se d i t e di nJ a v a,i td e s c r i b e sS o c k e tc o m m u n i c a t i o nm e c h a n i s mb e t w e e nt h et w op r o c e s s e sf r o mt h ed i“e r e n tc o m p u t e r si nt h en e t w o r k K e y w o r d s:S o c k e t,T C P I P,c l i e n t s e r v e rIp r o c e s s;J a v aL i n u x 是一个诞生于I n t e r n e t 和W W W 的产品,他和网络密切相关。L i n u x 网络系统具有稳定、简易、高效、兼容性好等特点,并且支持多种网络协议,如I Pv 4,I Pv 6,X 2 5,I P X,N E T B I O S,D D P 等。套接字(S o c k e t)是介于网络应用层和传输层之间的编程接口,套接字接口提供了访问下层通信协议的大量系统调用和相应的数据结构。在L i n u x 中,套接字接口是应用程序访问下层的网络协议的惟一方法。具体讲,套接字在用户级实现了两个应用程序之间的网络连接和数据交换,所以L i n u x 中的套接字意味着网络上的连接。套接字在T C P I P 网络模型中的地位如图l 所示。应用层网络层互联层物理层图1收稿日期l2 0 0 5 0 4 一0 5套接字1B S D 套接字接口s o c k e t 接口是为方便开发人员进行T C P I P 程序开发,而为T C P I P 协议所制定的一组应用程序接口。由于他最早应用于伯克莱大学的B S DU n i x 中,所以习惯上又称其为B S DS o c k e t(简称B S D)。一个套接字描述为一个通信连接的一端,在一个通信连接中的两端通信程序应各自有一个套接字来描述他们自己那一端,不同主机中的两个进程通过各自的套接字发送和接收消息,从而实现进程间跨网络的通信。L i n u x 的套接字支持多种网络协议,不同类型网络协议的工作方式不同,所使用的地址格式也完全不同。对于各种网络协议而言,使用相同地址格式的几个协议称为一个协议地址簇,表1 列出了B S D 套接字的常见地址簇。表lB S D 套接字地址簇的主要类型地址簇类型时应的通信协议A F I N E TA F I P XA F U N I XA F A X 2 5A F A P P L E T A L KT C P I P 协议N o v e UI P X 协议U n i x 内部套接字A x 2 5 协议套接字A P P L E T A L KD D S(M a c i n t o s h 机器用)L i n u x 将套接字地址簇抽象为统一的B S D 套接字接5 3 万方数据口,该接口是应用程序的开发接口,由各地址簇专有的软件支持。L i n u xB S DS o c k e t 支持以下常见套接字类型:(1)S O C K S T R E A M(数据流套接口):提供一个面向连接的双工顺序数据流传输和可靠的数据传输服务。这种套接字可以保证数据传输的可靠性,不会出现数据丢失、破损或重复出现等差错,而且通过流量控制避免发送的数据流超限。I n t e r n e t 地址中的T c P 协议支持流套接字。(2)S O C K D G R A M(数据报套接口):提供一个无连接和不可靠的双工数据传输服务。数据包以独立包形式被发送和接收。不对数据的传输提供无错保证,即数据可能被丢失、破坏,也可能被重复接收。I n t e r n e t 地址中的U D P协议支持这种套接字。(3)S O C K R A W(原始套接口):这种类型的套接字允许对低层协议如I P 或I C M P 直接访问,可以直接填充I P,T C P,U D P 或者I C M P 的包头,发送用户自己定义的I P 包或者I C M P 包。主要用于一些协议的开发,在网络安全的抓包中有重要的应用。2L i n u x 平台下的S o c k e t 编程原理在L i n u x 中,S o c k e t 属于文件系统的一部分,网络通信可以被看作是对文件的读取。这使得用户对网络的控制极为方便,L i n u x 的许多特性都非常有助于网络编程:首先,L i n u x 拥有P O S I X 标准库函数,S o c k e t(),b i n d(),l i s t e n(),s e n d(),a c c e p t()这几个库函数可以方便地实现客户机服务器模型中数据的传送与接收。其次,L i n u x 的进程管理策略也非常适合服务器的工作环境,L i n u x 中的每个进程都对应一个父进程,同时他也能创建多个子进程。在服务器端可以用父进程去侦听客户机的连接请求,当有客户机的连接请求发生时,父进程创建一个子进程去建立连接线路并与该客户机通信,而他本身可继续侦听其他客户机的连接请求,这样就可避免当有一个客户机与服务器建立连接后服务器就不能再与其他客户机通信的问题。最后,L i n u x 传承了U n i x 设备无关性这一优秀特性,即通过文件描述符实现了统一的设备接口:磁盘、显示终端、音频设备、打印设备甚至网络通信都使用统一的I O调用。这3 个特性大大方便和简化了L i n u x 环境下的网络程序设计。(1)S o c k e t 函数S o c k e t()用来创建套接口描述符,其格式声明为:i n tS o c k e t(i n td o m a i n,i n tt y p e,i n tp r o t o c 0 1)参数d o m a i n 说明网络程序所在的主机采用的通信协议,如A F I N E T(I Pv 4 协议),A F I N E T 6(I Pv 6 协议),A F L O C A L(U n i x 域协议);参数t y p e 指定套接口类型(数据流套接口、数据报套接口、原始套接口),即相当于指明了网络程序所采用的通信协议(T C P 还是U D P);参数p r o t o c o l 由于指定了t y p e,一般取O 即可。5 4(2)b i n d 函数b i n d()用来将套接口绑定到本地计算机的某一端口,其格式声明为:i n tb i n d(i n ts o c k f d,s t r u c ts o c k a d d r*m y a d d r,i n ta d d r I e n)s o c k f d 为套接口描述字;指针m y a d d r 指向s o c k a d d r结构,该结构包含了远程服务程序的I P 地址与端口号;a d d r l e n 指明s o c k a d d r 结构的长度。(3)l i s t e n 与a c c e p t 函数服务器端通过l i s t e n()等待一个进入的连接请求,接收到的请求存于队列中。当有多个客户端和服务器相连时,通过参数b a c k I o g 指定队列的最大长度。a c c e p t()则从已接收的连接请求队列中取出请求并分析这个请求,若队列为空,则使服务器端程序阻塞。本文主要阐述的是面向连接的数据流通信的S o c k e t编程过程。客户机服务器主要编写客户程序和服务器程序,以下是主要的编程框架。面向连接的数据流通信中,服务器端程序基本的编写步骤如图2 所示。首先,在服务器端使用S o c k e t()建立一个通信端口,再用b i n d()命令把一个地址绑定到这个端口上。然后,服务器端使用l i s t e n()侦听连接请求,当远程的客户机试图通过c o n n e c t()连接l i s t e n()正在侦听的端口时,连接将会在队列中等待,直到使用a c c e p t()处理他。在a c c e p t()处理了连接请求后,将会生成一个新的描述这个连接端口的套接字,利用这个套接字就可以发送和接收数据了。如果l i s t e n()一直没有侦听到连接请求,那么服务器任务就会在a c c e p t()处阻塞(在阻塞模式下),一直到有连接请求到来。不论何种编程语言,和s o c k e t 打交道都是这一组调用,只是在格式上有所区别。V i s u a lB a s i c 采用W i n S o c k 控件,C+B u i l d e r 采用T c l i e n t S o c k e t 元件和T s e r v e r S o c k e t 元件,v i s u a lC+采用M F C 类中的C A s y n c S o c k e t 类和C S o c k e t 类,J a v a 中通过J a v a n e t S o c k e t 和J a v a n e t S e r v e r S 0 c k e t 类库来实现网络之间的通讯。服务器图2T C P 客户机服务器程序的工作流程 万方数据对于客户机任务,他也需要先用S o c k e t()建立一个通信端口,但是不必用b i n d()把一个本地地址绑定到这个端口上,而是直接使用c o n n e c t()向指定的服务器发送连接请求。函数c o n n e c t()调用成功后,套接口描述字就与远程服务程序建立好了连接,建立连接后通过s e n d()和r e c v()实现数据的发送与接收。s e n d()返回实际发送的字节数,如果返回的字节数比要发送的字节数少,则在以后必须发送剩下的数据。套接口读写完毕后,可通过c l o s e()调用关闭连接的套接口文件描述符。3 用J a v a 编写的客户服务器应用程序示例网络应用程序的核心由一对程序组成一个客户程序和一个服务器程序。当这2 个程序执行的时候,系统就会创建一个客户端进程和一个服务器端进程,并且这2个进程通过对S o c k e t 的读写来互相通信。下面就客户月艮务器模型来对T C P 的S o c k e t 编程进行示范,程序功能如下:客户端从其键盘读入一行并将该行发送到通往服务器的套接字上;服务器从其连接套接字读入一行并将该行转换成大写;服务器将改写后的这一行输出到通往客户端的连接套接字上;客户端从他的套接字中读出修改后的行,并将该行在显示器上打印输出。(1)应用程序的客户端代码如下:i m p o r tj a V a i o*5i m p o r tj a v a n e t*;c l a s sT C P C I i e n t p u b i i cs t a t i cv o i dm a i n(S t r i n ga r g v )t h r o w sE x c e p t i o nS t r i n gs e n t e n c e s e n t e n c e 是用户在键盘打出并发送给服务器的字符串S t r i n gm o d i f i e d S e n t e n c e;B u f f e r e d R e a d e ri n F r o m U s e r=n e wB u f f e r e d R e a d e r(n e wI n p u t S t r e a m R e a d e r(S y s t e m i n);创建B u f f e r e d R e a d e r 类型的流对象i n F r o m U s e rS o c k e tc l i e n t S o c k e t=n e wS o c k e t(”h o s t n a m e”,1 2 3 4);创建S o c k e t 类型的对象c l i e n t S o c k e t,还对客户和服务器间的T C P 连接进行初始化。字符串“h o s t n a m e”必须用服务器的主机名,1 2 3 4 是假设的端口号。D a t a O u t p u t S t r e a mo u t T o s e r v e r=n e wD a t a O u t p u t S t r e a m(c l i e n t S o c k e t g e t O u t p u t S t r e a m();B u f f e r e d R e a d e ri n F r o m S e r v e r=n e wB u f f e r e d R e a d e r(n e wI n p u t S t r e a m R e a d e r(c l i e n t S o c k e t g e t I n p u t S t r e a m();创建了两个连接在套接字上的流对象:o u t T o S e r v e r 流为进程提供了到套接字的输出;i n F r o m S e r v e r 流为进程提供了从套接字的输入s e n t e n c e i n F r o m U s e r r e a d L i n e();o u t T o S e r v e r w r i t e B y t e s(s e n t e n c e+n7);将字符串s e n t e n c e 加上一个回车,传送到o u t T o s e r v e r流中m o d i f i e d S e n t e n c e=i n F r o m S e r v e r r e a d L i n e();从服务器接收字符,经过流i n F r o m S e r v e r 放入字符串m o d i f i e d S e n t e n c e 中S y s t e m o u t p r i n t I n(”S t r i n gF r o mS e r v e r:”+m o d i f i e d S e n t e n c e);C l i e n t S o c k e t c I o s e();关闭客户与服务器问的T C P 连接j a v a i o 和j a v a n e t 是J a v a 的包,j a v a i o 包包含了输入和输出流的类,j a v a n e t 包提供了网络支持类。流i n F r o m U s e r 是该程序的一个输入流,当用户在键盘上打出字符的时候,字符就进入了i n F r o m U s e r 流中。I n F r o m S e r v e r 流是程序的另一个输入流,他被加入到套接字c l i e n t S o c k e t 上。从网络中到来的字符进入流I n F r o m S e r v e r 中。最后,流o u t T o S e r v e r 是该程序的输出流,他也被加入在套接字上。客户端发送到网络中的字符流入o u t T o S e r v e r 流中。(2)应用程序的服务器端代码如下:l m p o r t】a V a l o*;i m p o r tj a v a n e t*;c l a s sT C P S e r v e rfp u b l i cs t a r tv o i dm a i n(S t r i n ga r g v )t h r o w sE x c e p t i o nS t r i n gc l i e n t S e n t e n c e;S t r i n gr e s u l t S e n t e n c e;希望得到的结果字符串S e r v e r S o c k e tw e l c o m e S o c k e tn e wS e r v e rS o c k e t(1 2 3 4);创建对象w e l c o m e S o c k e t,他是等待客户端到来的敲击的门。端口号1 2 3 4 对服务器进程进行标识w h i l e(t r u e)S o c k e tc o n n e c t i o n S o c k e t=w e l c o m e S;o c k e t a c c e p t();当有客户敲击w e l c o m e S o c k e t 时,该行创建一个新的套接字c o n n e c t i o n s o c k e t,然后T C P 建立了一个在客户c l i e n t S o c k e t 和服务器c o n n e c t i o n S o c k e t 间的连接,客户端和服务器端就可以通过该连接相互传送字节了。需要说明的是,c o n n e c t i o n s o c k e t 建立后,服务器应该可以为使用w e l c o m e S o c k e t 的应用程序继续侦听来自其他客户端的请求,为简化阐述,本程序并未侦听更多的连接请求。B u f f e r e d R e a d e ri n F r o m C l i e n t=n e wB u f f e r e d R e a d e r(n e wI n p u t S t r e a m R e a d e r(C o n n e c t i o n S o c k e t g e t I n p u t S t r e a m();D a t a O u t p u t S t r e a mo u t T o C I i e n t=n e wD a t a O u t p u t S t r e a m(c o n n e c t i o n!沁c k e t g e t O u t p u t S t r e a m();c l i e n t S e n t e n c e=i n F r o m C I i e n t r e a d L i n e()lr e s u I t S e n t e n c e=c I i e n t S e n t e n c e t o U p p e r C a s e()+7 n 7;o u t T o C“e n t w“t e B y t e s(r e s u l t S e n t e n c e);输出结果,并等待下一输出)一旦两个程序在各自的主机上被编译了,服务器程序就首先在服务器上执行,他在服务器上创建了一个进程。如前所述,服务器进程等待着一个客户进程与他进行联系。当客户程序执行时,客户端创建一个进程,并且这个进程与服务器进行联系并建立一个到服务器的T C P 连接。然后客户端的用户可以使用该应用程序来发送一行并接收该行的转换成大写之后的字符串。4 结语J a v a 是平台无关的,且编写的程序简洁,因而用J a v a(下转第5 9 页)5 5 万方数据此过程中,F P G AA r c h i t e c t x i l i n xX C 4 0 0 0 s p a r t a n 功能将对设计进行校验,检验参数是否符合X i l i n xD S PL o g i c C O R E 的要求。符合要求后,将设计转换到X i l i n x 的设计环境中,其中包括V H D L 的行为级仿真模型和网表文件(N e t L i s t)。多电平判决模块的判决门限应该能区分4 个电平,所以可以采用数值为1,2 和3 的3 个门限,将o 4 的区间等分,从而可以将信号量化为o,1,2,3 四个电平。5结语软件无线电的提出和发展,标志着无线通信从硬件到软件的质的飞跃,是未来无线电通信的发展方向。近年来F P G A 技术迅速发展,他既具有A S I C 的高速处理能力,又拥有很好的可重构性能,而且开发成本低、开发周期短,使其成为实现软件无线电的数字信号处理的一种非常有效的选择。本文对其中较为关键的1 6 Q A M 调制解调系统提出了F P G A 的实现方法,其他调制解调方式也可类似得到。参考文献 1 徐以涛,沈良,王金龙F P G A 技术在软件无线电中的应用 J 电信科学,2 0 0 1,1 1(1 7)2 曾艺城可编程逻辑技术及其在软件无线电中的应用一数字调制解调系统的F P G A 实现 D 北京:北京航空航天大学,2 0 0 1 3 汪东艳软件无线电技术与可重配置计算体系结构 J 今日电子,2 0 0 2,(7):1 2 1 3 作者简介苏小妹2 0 0 2 级电路与系统专业硕士研究生。主要研究方向为软件无线电在第三代移动通信系统中的应用。黎福海硕士生导师,副教授,湖南大学电气与信息工程学院副院长。主要研究方向为现代网络与通信技术、电子系统与智能化系统设计、集成电路设计与测试技术。汪浩2 0 0 2 级电路与系统专业硕士研究生。(上接第5 2 页)据方案的核心对象。D a t a s e t 是数据的内存驻留表示形式,无论数据源是什么,他都会提供一致的关系编程模型。他可以用于多个不同的数据源,用于X M L 数据,或用于管理应用程序本地的数据。D a t a s e t 表示包括相关表、约束和表间关系在内的整个数据集。D a t a s e t 中的方法和对象与关系数据库模型中的方法和对象一致。D a t a s e t 也可以按X M L 的形式来保持和重新加载其内容,并按x M L 架构定义语言(x S D)架构的形式来保持和重新加载其架构。4 结语A D O N E T 是当前数据库技术处理的标准,集合了所有用于数据处理的类和程序化接口。这些类和接口代表了数据容器对象,他们以典型的数据库功能为特色。同时A D O N E T 是N E T 数据库应用程序的最终解决方案。他以整体设计为特色,是一个新的数据访问编程模型,能够帮助程序员以更加有效的方式构建高效数据库应用程序。参考文献 1 杨志娟,李朋朋,马云艳,等用v i s u a lB a s i c N E T 和v i s a u lc#开发x M Lw e b 服务与服务组件 M 北京z 清华大学出版社,2 0 0 2 2 孙三才,许薰尹程序设计C#8 认S P N E T M 北京。中国青年出版社,2 0 0 1 3 康际科技A s P N E T 行家设计实务 M 北京:中国铁道出版社,2 0 0 1 4 石磊v B N E T 与数据库开发 M 北京:人民邮电出版社,2 0 0 1 5 F r e d B o r e l l V B N E T 高级编程 M 康博译北京:清华大学出版杜,2 0 0 1 6 D o u g l a sR e i l l yJ A s P N E Tw e b 应用程序开发新思维 M 北京:清华大学出版社,2 0 0 2 作者简介孔延香女,1 9 7 4 年出生,西北民族大学计算机科学与信息工程学院2 0 0 3 级计算机应用技术硕士。研究方向为计算机网络数据库应用。(上接第5 5 页)进行客户服务器编程越来越流行。以上介绍了S o c k e t 的编程机制及在L i n u x 系统下的一个套接口程序,能够发现用S o c k e t 描述网络程序比较直观,且框架清晰、明确。参考文献 1 毛德操,胡希明“n u x 内核源代码情景分析(下)M 杭州:浙江大学出版社2 0 0 1 2 张威L i n u x 网络编程教程 M 北京:北京希望电子出版社,2 0 02 3 D o u g l a sc o m e r,E l a v i dLs t e y e n s T C P I P 网络互联技术(卷3):客户一服务器编程与应用 M 北京:清华大学出版社,2 0 0 4 作者简介吴佩贤男,1 9 7 4 年出生,浙江诸暨人。主要从事实时操作系统及神经网络研究。5 9 万方数据Linux环境下基于TCP的Socket编程浅析Linux环境下基于TCP的Socket编程浅析作者:吴佩贤,Wu Peixian作者单位:绍兴文理学院,计算机系,浙江,绍兴,312000刊名:现代电子技术英文刊名:MODERN ELECTRONICS TECHNIQUE年,卷(期):2005,28(16)被引用次数:6次 参考文献(3条)参考文献(3条)1.Douglas Comer;David L Stevens TCP/IP网络互联技术(卷3):客户-服务器编程与应用 20042.张威 Linux网络编程教程 20023.毛德操;胡希明 Linux内核源代码情景分析 2001 引证文献(6条)引证文献(6条)1.刘媛.张伟.王知学 基于B/S和C/S架构的嵌入式远程监控系统期刊论文-仪表技术与传感器 2008(10)2.张红霞.丁国清 一种嵌入式数据采集及传输系统的设计与实现期刊论文-电子测量技术 2008(9)3.赖奕霖 嵌入式系统测试中关于双机通讯的研究期刊论文-福建电脑 2007(12)4.周茜.刘锦高.祝贵根 一种ATCA3.1系统节点板间通信机制的设计期刊论文-计算机应用 2006(11)5.朱婧 基于ARM9的嵌入式数据采集与控制系统硬件平台的设计学位论文硕士 20066.唐蕊 基于Qtopia的嵌入式信息终端的设计与实现学位论文硕士 2005 本文链接:http:/

    注意事项

    本文(Linux环境下基于TCP的Socket编程浅析.pdf)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开