计算机网络课设-VB网络聊天程序

上传人:仙*** 文档编号:167840106 上传时间:2022-11-06 格式:DOC 页数:31 大小:622.48KB
收藏 版权申诉 举报 下载
计算机网络课设-VB网络聊天程序_第1页
第1页 / 共31页
计算机网络课设-VB网络聊天程序_第2页
第2页 / 共31页
计算机网络课设-VB网络聊天程序_第3页
第3页 / 共31页
资源描述:

《计算机网络课设-VB网络聊天程序》由会员分享,可在线阅读,更多相关《计算机网络课设-VB网络聊天程序(31页珍藏版)》请在装配图网上搜索。

1、计算机网络课程设计报告设计题目:网上聊天程序设计 目录一、课程设计的目的和意义1二、设计的具体任务1三、设计的构思及理论基础11.设计构思22.理论基础2OSI网络参考模型2TCP/IP参考模型4TCP协议5UDP协议6端口6SOCKET(套接字/插口)7四、程序设计71.Winsock控件介绍7概述7TCP基础8UDP基础8属性8方法10事件122.界面设计及主要代码14创建网络聊天室服务端14创建网络聊天室客户端20五、程序调试221.调试过程232.调试过程中出现的问题283.解决问题的方法28六、个人总结29参考文献29一、课程设计的目的和意义21世纪是一个以网络为核心的信息时代。要实

2、现信息化,就必须依靠完善的网络。通过本课程设计,使学生在对计算机网络技术与发展整体了解的基础上,掌握网络的主要种类和常用协议的概念及原理,初步掌握以TCP/IP协议族为主的网络协议结构,培养学生在TCP/IP协议工程和LAN、WAN上的实际工作能力:学会网络构建、日常维护以及管理的方法,使学生掌握在信息化社会建设过程中所必须具备的计算机网络组网和建设所需的基本知识与操作技能。二、设计的具体任务利用VB6.0编程工具来编写网络聊天程序,要求是能够实现两台或两台以上的计算机能在局域网中通信,设计出一个程序,能实现多人聊天,即网络聊天室,连接的每一台计算机可以连接的所有计算机交换信息,并且服务器端可

3、以控制聊天的模式,比如是否开启讨论组即群聊,或者是服务器端向指定的客户端发送消息。在服务端,可以设置端口,查看客户端的人数和IP,能和指定的用户进行通信。在客户端,通过设置服务端的IP和端口号来来连接服务端,在客户端可以显示出是否已连接。连接后可以相互聊天,就像QQ那样进行互动。三、设计的构思及理论基础1.设计构思环境要求:Windows XP以上,VB6.0企业版,两台或两台以上的计算机组成的局域网。本聊天程序是由服务端和客户端组成,程序的核心控件为Winsock控件,他是网络通信的核心要素。在服务端和客户端个添加一个Winsock控件,设置服务端Winsock的Port属性。本程序中,服务

4、端可以连接多个客户端,所以,把服务端的Winsock控件的index属性设置为0,这样可以创建Winsock控件数组,通过加载控件数组可以连接多个客户端。要实现网络聊天室的功能,就必须让每个客户端发送的消息被其他的客户端收到,所以,当一个客户端发送消息后,服务端接受消息后就必须转发给其他客户端,这样,才可以实现这个功能。在服务端可以查看连接的客户端的IP,所以,当连接服务端后,将连接的客户端IP显示在List中,并将在线人数加1。isRunning()动态数组来记录对应控件数组当前加载的最大index及以前index控件是否加载,如有空缺,下次请求加载时可加载空缺的控件index,而不是一直从

5、后面加,导致控件数组的index值过大。2.理论基础OSI网络参考模型国际标准化组织创建OSI(Open System Interconnection,开放系统互连)模型,这一模型可以让产品在网络上协调工作。OSI开放系统互连参考模型将整个网络的通信功能划分成七个层次,每个层次完成不同的功能。这七层由低层至高层分别是:物理层、数据链路层、网络层、运输层、会话层、表示层和应用层。OSI参考模型OSI环境中的数据传输过程OSI环境中的数据流将模型分解为层,网络中计算机的互通性和互相操作的能力变得可以管理,因为每层是完备的,而并不依赖于操作系统或其他因素。封装(Encapsulation)是在数据上

6、加入报头或加在数据包里面的过程,在OSI参考模型中的每一层都要涉及到封装。TCP/IP参考模型TCP/IP体系共分成四个层次。它们分别是:网络接口层、网络层、传输层和应用层。 TCP/IP 参考模型与 OSI 参考模型的对应关系TCP协议TCP(Transmission Control Protocol,传输控制协议)是面向连接的,即在进行数据传输之前需要先建立连接,而且目的主机收到数据报后要发回确认信息。这种协议提供了一种可靠的传输服务,其逻辑通信信道就相当于一条全双工的可靠信道。与UDP相比提供了较多的功能,但是相对的报文格式和运行机制也较为复杂。UDP协议UDP(User Datagra

7、m Protocol,用户数据报协议)是无连接的,即在进行数据传输之前不需要建立连接,而目的主机收到数据报后也不需要发回确认。这种协议提供了一种高效的传输服务,但其逻辑通信信道则是一条不可靠的信道。UDP提供的服务与IP协议一样,是不可靠的、无连接的服务。但它于不同于IP协议,因为IP协议是网络层协议向运输层提供无连接的服务,而UDP是传输层协议,它向应用层提供无连接的服务。TCP/IP在传输层上另外建立一个UDP协议是由于UDP传输效率高,适合于某些简单的交互应用场合,如应用层的简单文件传送TFTP,便是建立在UDP上的。对来回只有一次或有限几次的交互建立一个连接开销太大,即使出错重传也比面

8、向连接的方式效率高。端口TCP、UDP都使用了与应用层接口处的协议端口(protocol port,简称端口)来同上层的应用进程进行通信。当运输层接收到IP层交上来的数据(TCP报文段或UDP用户数据报)时,就根据其中首部的端口号来决定应当通过哪一个端口上交给应当接收此数据的应用进程。如果没有端口,运输层就无法知道数据应当交付给应用层的哪一个进程。 端口实际上是一个16Bit长的地址,并用端口号进行标识。端口号相当于一个抽象的定位符,有时也可以称为邮箱。其只是为了标识本计算机应用层中的各进程。端口号只具有本地意义,不同计算机中相同的端口号是没有联系的。16Bit长的端口号可以允许有0至6553

9、5个端口号。 端口分为熟知端口和一般端口(动态连接端口),0 1023为熟知端口,102465535为一般端口。SOCKET(套接字/插口)为了使得多主机多进程通信时,不至于发生上述的混乱情况,必须把端口号和主机的IP地址结合起来使用,称为插口或套接字(Scoket)。由于主机的IP地址是唯一的,这样目的主机就可以区分收到的数据报的源端机了。 插口包括IP地址(32位)和端口号(16位,共48位。如上(124.33.13.55,200)和(126.45.21.51,25)就是一对插口,在整个Internet中,在传输层上进行通信的一对插口都必须是唯一的。 在上述的例子中,使用的是TCP协议,若

10、使用UDP协议,虽然在进行通信的进程间不需要建立连接,但是在每次传输数据时,都要给出发送端口和接收端口,因此同样也要使用插口。 四、程序设计1.Winsock控件介绍概述Winsock控件工作在传输层上,在这一层上,目前主要流行的协议包括TCP和UDP:TCP协议适用于那些对于数据的可靠性要求比较高的情况,如HTTP,FTP等;UDP协议用于对数据可靠性要求不高而对速度要求较高的情况,如腾讯公司的QQ协议等。Winsock控件对于用户来说是不可见的,它提供了TCP和UDP网络服务,编写应用程序时,不必了解TCP的细节或调用低级的Winsock APIs。要使用Winsock控件,应先将其添加到

11、工具箱,方法:“工程”“部件”,打开对话框,选择“Microsoft Winsock Control 6.0(SP5)”,单击确定按钮将其添加到工具箱,记着要打上勾,才能添加进去。TCP基础数据传输协议允许创建和维护与远程计算机的连接。连接两台计算机就可彼此进行数据传输。 如果创建客户应用程序,就必须知道服务器计算机名或者 IP 地址(RemoteHost 属性),还要知道进行“侦听”的端口(RemotePort 属性),然后调用 Connect 方法。 如果创建服务器应用程序,就应设置一个收听端口(LocalPort 属性)并调用 Listen 方法。当客户计算机需要连接时就会发生 Conn

12、ectionRequest 事件。为了完成连接,可调用 ConnectionRequest 事件内的 Accept 方法。 建立连接后,任何一方计算机都可以收发数据。为了发送数据,可调用 SendData 方法。当接收数据时会发生 DataArrival 事件。调用 DataArrival 事件内的 GetData 方法就可获取数据。UDP基础用户数据报文协议 (UDP) 是一个无连接协议。跟 TCP 的操作不同,计算机并不建立连接。另外 UDP 应用程序可以是客户机,也可以是服务器。 为了传输数据,首先要设置客户计算机的 LocalPort 属性。然后,服务器计算机只需将 RemoteHos

13、t 设置为客户计算机的 Internet 地址,并将 RemotePort 属性设置为跟客户计算机的 LocalPort 属性相同的端口,并调用 SendData 方法来着手发送信息。于是,客户计算机使用 DataArrival 事件内的 GetData 方法来获取已发送的信息。属性Winsock控件的常用属性编号属性说明1ByteReceived返回接收到数据的数量2LocalHostName返回本地计算机名称3LocalIP返回本地计算机的IP地址,xxx.xxx.xxx.xxx4LocalPort返回或设置所用到的本地计算机端口5Protocol返回或设置Winsock控件使用的协议6R

14、emoteHost返回或设置远程计算机的名称和地址7RemoteHostIP返回远程计算机的IP地址8RemotePort返回或设置远程计算机的端口号9SockerHandle返回一个与套接字句柄对应的值10State返回空间的状态,用枚举类型其中2、3、6、7为String,Port为Long,Protocol值为0-sckTCPProtocol,1-sckUDPProtocol,State值用枚举类型,常数值描述sckClosed0缺省的。关闭sckOpen1打开sckListening2侦听sckConnectionPending 3连接挂起sckResolvingHost 4识别主机s

15、ckHostResolved 5已识别主机sckConnecting 6正在连接sckConnected 7已连接sckClosing 8同级人员正在关闭连接sckError 9错误方法Winsock控件常用的方法: Accept方法仅适用于 TCP 服务器应用程序。在处理 ConnectionRequest 事件时用这个方法接受新连接。语法object.Accept requestedobject 所在处代表对象表达式,其值是“应用于”列表中的对象。数据类型 Long ,返回值 Void在 ConnectionRequest 事件中使用 Accept 方法。ConnectionRequest

16、 事件有一个对应的参数,即 RequestID 参数,该参数应该传给 Accept 方法。 Bind方法指定用于 TCP 连接的 LocalPort 和 LocalIP。如果有多协议适配卡,就用这个方法。语法 object.Bind LocalPort, LocalIP,说明:在调用 Listen 方法之前必须调用 Bind 方法。 Close方法对客户机和服务器应用程序关闭 TCP 连接或侦听套接字。 GetData方法获取当前的数据块并将其存储在变体类型的变量中。返回值 Void语法object.GetData data, type, maxLentype 的设置值是:描述常数Bytevb

17、ByteIntegervbIntegerLongvbLongSinglevbSingleDoublevbDoubleCurrencyvbCurrencyDatevbDateBooleanvbBooleanSCODEvbErrorStringvbStringByte ArrayvbArray + vbByte Listen方法创建套接字并将其设置为侦听模式。该方法仅适用于 TCP 连接。语法 object.Listen说明:当有新连接时就会出现 ConnectionRequest 事件。处理 ConnectionRequest 事件时,应用程序应该(在一个新的控件示例上)用 Accept 方法接

18、受连接。 SendData方法将数据发送给远程计算机。返回值Void语法:object.SendData data事件Winsock空间的常用事件: Close事件当远程计算机关闭连接时出现。应用程序应正确使用 Close 方法关闭 TCP 连接。语法object_Close( ) Connect事件当一个 Connect 操作完成时发生。语法object.Connect(),object 所在处代表一个对象表达式,其值是一个 Winsock 控件。说明:使用 Connect 事件确认已经成功建立了一个连接。 ConnectionRequest 事件当远程计算机请求连接时出现。仅适用于 TCP

19、 服务器应用程序。在请求一个新连接时激活该事件。激活事件之后,RemoteHostIP 和 RemotePort 属性存储有关客户的信息。 语法:object_ConnectionRequest (requestID As Long)。说明:服务器可决定是否接受连接。如果不接受新连接,则同级人员(客户)将得到 Close 事件。(在一个新控件示例上)用 Accept 方法接受新连接。 DataArrival 事件当新数据到达时出现。语法object_DataArrival (bytesTotal As Long)说明如果没有获取一个 GetData 调用中的全部数据,则事件不会出现。只有存在新

20、数据时才激活事件。可随时用 BytesReceived 属性检查可用的数据量。 Error事件无论何时,只要后台处理中出现错误(例如,连接失败,或者在后台收发数据失败)事件就会出现。语法object_Error(number As Integer, Description As String, Scode As Long, Source As String, HelpFile as String, HelpContext As Long, CancelDisplay As Boolean)Error 事件的语法包含下面部分:部分描述object对象表达式,其值是“应用于”列表中的对象。numb

21、er定义错误代码的整数。请参阅下述有关常数的“设置值”。description包含错误信息的字符串。Scode长 SCODESource描述错误来源的字符串。HelpFile包含帮助文件名的字符串。HelpContextHelp 文件上下文。CancelDisplay指示是否取消显示。缺省值为 False,以此显示缺省的错误信息框。如果不想使用缺省的信息框,则将 CancelDisplay 设置成 True。2.界面设计及主要代码创建网络聊天室服务端具体操作步骤如下:(1) 创建一个新的标准EXE工程。(2) 添加控件,如图所示:名称属性Command1Caption:设置Command2Ca

22、ption:发送,Default为TrueText1MultiLine为True,Locked为True,ScrollBars为2,接受区域Text2 MultiLine为True,ScrollBars为2,发送区域StatusBar1Panel(1).Text“花开鸟儿来 制作” (这是我自己叫的昵称)Panel(2).Text样式为6-sbrDatePanel(3).Text样式为5-sbrTimePanel(4).Text显示在线人数Winsock1Index为0,Protocol为0-sckTCPProtocolTimer1Interval为1000List1Form1Caption如

23、图,BorderStyle为1,MinNButton为True其他的TextBox控件、Frame控件和Label控件就不多说。(3) 主要代码Dim isGroup As Boolean 记录是否开启讨论组Dim isRunning() As Boolean 对应的控件数组是否加载Dim intRun As Integer 在线人数Dim CurU As String 当前用户IPPrivate Sub Check1_Click()If Check1.Value = 1 Then isGroup = TrueElse isGroup = FalseEnd IfEnd SubPrivate S

24、ub Command1_Click() If txtIP.Text = Or txtPort.Text = Then txtIP.Text = txtPort.Text = Else Winsock1(0).LocalPort = txtPort.Text Winsock1(0).Bind txtPort, txtIP Winsock1(0).Listen Command1.Enabled = False txtIP.Locked = True txtPort.Locked = True End IfEnd SubPrivate Sub Command2_Click() Dim i As In

25、teger If Text2.Text = Then Exit Sub If isGroup = True Then For i = 1 To UBound(isRunning) - 1 If isRunning(i) Then Winsock1(i).SendData Text2.Text DoEvents End If Next Else Winsock1(FindCurIP).SendData Text2.Text End If Text1.Text = Text1.Text & vbCrLf & vbCrLf & Now & vbCrLf & ME:- & Text2.Text Tex

26、t1.SelStart = Len(Text1.Text) Text2.Text = End SubPrivate Sub Form_Load() intRun = 0 isGroup = False txtIP.Text = Winsock1(0).LocalIPEnd SubPrivate Sub List1_DblClick() Label5.Caption = 当前用户: & List1.List(List1.ListIndex) CurU = List1.List(List1.ListIndex)End SubPrivate Sub Timer1_Timer()If intRun =

27、 0 ThenCommand2.Enabled = FalseElseCommand2.Enabled = TrueEnd IfStatusBar1.Panels(5).Text = 在线人数: & intRun & 人End SubPrivate Sub Winsock1_Close(index As Integer)Text1.Text = Text1.Text & vbCrLf & Now & & Winsock1(index).RemoteHostIP & 断开连接!Text1.SelStart = Len(Text1.Text)List1.RemoveItem ipList(inde

28、x)isRunning(index) = FalseintRun = intRun - 1If intRun = 0 ThenLabel5.Caption = 当前用户: Else If Winsock1(index).RemoteHostIP = CurU Then Label5.Caption = 当前用户: & Winsock1(intRun).RemoteHostIP CurU = Winsock1(intRun).RemoteHostIP List1.ListIndex = List1.ListCount - 1 End IfEnd IfWinsock1(index).CloseUn

29、load Winsock1(index)End SubPrivate Sub Winsock1_ConnectionRequest(index As Integer, ByVal requestID As Long) Dim i As Integer Dim IP As String Dim tmp As Integer If intRun = 0 Then intRun = intRun + 1 ReDim isRunning(intRun + 1) Load Winsock1(intRun) Winsock1(intRun).Accept requestID isRunning(intRu

30、n) = True tmp = intRun Text1.Text = Text1.Text & vbCrLf & Now & & Winsock1(intRun).RemoteHostIP & 连接成功! Else For i = 1 To UBound(isRunning) - 1 If isRunning(i) = False Then Exit For Next If i = UBound(isRunning) Then intRun = intRun + 1 ReDim Preserve isRunning(intRun + 1) Load Winsock1(intRun) Wins

31、ock1(intRun).Accept requestID isRunning(intRun) = True tmp = intRun Text1.Text = Text1.Text & vbCrLf & Now & & Winsock1(intRun).RemoteHostIP & 连接成功! Text1.SelStart = Len(Text1.Text) Else intRun = intRun + 1 Load Winsock1(i) Winsock1(i).Accept requestID isRunning(i) = True tmp = i Text1.Text = Text1.

32、Text & vbCrLf & Now & & Winsock1(i).RemoteHostIP & *连接成功! Text1.SelStart = Len(Text1.Text) End If End If List1.AddItem Winsock1(tmp).RemoteHostIP CurU = Winsock1(tmp).RemoteHostIP Label5.Caption = 当前用户: & CurUEnd SubPrivate Sub Winsock1_DataArrival(index As Integer, ByVal bytesTotal As Long) Dim str

33、 As String Dim i As Integer Winsock1(index).GetData str If isGroup = True Then For i = 1 To UBound(isRunning) - 1 If isRunning(i) And i index Then Winsock1(i).SendData SendInfo(index, str) DoEvents Next End If Text1.Text = Text1.Text & vbCrLf & vbCrLf & Now & vbCrLf & Winsock1(index).RemoteHostIP &

34、HE:- & str Text1.SelStart = Len(Text1.Text) End SubFunction SendInfo(winS As Integer, Data As String) As String Dim str As String Dim IP As String IP = Winsock1(winS).RemoteHostIP SendInfo = IP & & DataEnd FunctionFunction ipList(index As Integer) As Integer Dim i As Integer For i = 0 To List1.ListC

35、ount - 1 If List1.List(i) = Winsock1(index).RemoteHostIP Then ipList = i NextEnd FunctionFunction FindCurIP() As Integer Dim i As Integer For i = 1 To UBound(isRunning) - 1 If isRunning(i) = True Then If CurU = Winsock1(i).RemoteHostIP Then FindCurIP = i Exit Function End If End If Next FindCurIP =

36、intRunEnd Function创建网络聊天室客户端同创建服务端一样,具体步骤不再叙述,可以参考上面。(1) 设计如下界面(2) 程序代码Sub GetInfo(Data As String, IP As String, Info As String) Dim i As Integer Dim dataLen As Integer dataLen = Len(Data) For i = 1 To dataLen If Mid(Data, i, 1) = Then Exit For Next If i & Text4.Text Text3.SelStart = Len(Text3.Text)

37、 Text4.Text = End SubPrivate Sub Timer1_Timer()If Winsock1.State = 7 ThenStatusBar1.Panels(4).Text = 温馨提示:已连接Command3.Enabled = TrueElseStatusBar1.Panels(4).Text = 温馨提示:未连接Command3.Enabled = FalseEnd IfEnd SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim strG As String Dim i As Inte

38、ger Dim IP As String Dim Info As String Winsock1.GetData strG GetInfo strG, IP, Info Text3.Text = Text3.Text & vbCrLf & vbCrLf & Now & vbCrLf & IP & :- & Info Text3.SelStart = Len(Text3.Text) End Sub五、程序调试1.调试过程现在组建一个局域网,由四台PC组成,一台为服务器,其他的为客户机,PC的操作系统均为Windows 7,客户端都是用VB自带的软件打包向导制作的setup.exe文件安装而成,服

39、务器的IP为192.168.1.44,Port为1029,客户PC的IP分别为192.168.1.45、192.168.1.222、192.168.1.49,本次调试的PC为笔记本电脑,且使用无线网连接成的局域网。以下截图为本次程序调试截图:图1 客户端192.168.1.222图2 客户端192.168.1.45图3 客户端192.168.1.49(由于客户端是双网卡,调试时连接着互联网,测试的使用另一个网卡)图4 服务器端192.168.1.44图5 客户端192.168.1.45图6 服务端向客户端192.168.1.49发送消息图7 客户端192.168.1.49接收到服务端的消息图8

40、 服务端向客户端192.168.1.222发送消息图9 客户端192.168.1.222回复服务端图10 所有客户端断开连接2.调试过程中出现的问题刚开始的时候,编写的是一个服务端和一个客户端,测试连接成功后,想着怎样才能让多台计算机连接起来?怎样让所有的客户端可以一起来交流?在实现多人交流的过程中,有时一些客户端发出的消息其他客户端接收不到,发出几条后就会一块出现,好像是一次发出的消息;在多人对话中,分不清楚对方是谁,不知道信息的发布者?怎样让服务端和指定的客户端通信而不是广播式?3.解决问题的方法多个客户端和服务端相连,就要在服务端设置Winsock控件数组,让一个Winsock控件监听本

41、地端口,如有连接请求,则加载一个控件进行通信;客户端一起交流,就是服务端每次将客户端的信息进行广播式转发;客户端接受信息的延迟,在转发的循环语句中添加DoEvents语句,进行缓冲转达;消息的发布者不清楚,将要转发的信息进行打包,即在头部添加发布者的IP地址,以便于区分,在客户端也要进行数据包的解析,找出发布者和原信息;向指定的客户端通信,在列表中点击客户端IP,通过查找所有连接的PC的IP,找到与其连接的Winsock控件,然后进行交流。六、个人总结从这次课程设计中,我得到了很多知识。在平时的计算机网络学习过程中,只感觉到课程的乏味与无聊,感觉理论知识就好像非常平淡,没有什么作用,但是经过这

42、次课程设计后,我才发现,实践是离不开理论的,课堂上讲的知识在实际中有很大的作用,是我对网络知识有了很好的掌握。其次,通过VB编程语言编写聊天程序,使我对网络编程有了更深刻的了解,其实,网络编程离不开网络知识,只有掌握网络的基本原理,才能对网络编程有更好的应用。还有,我们不怕遇到困难,而是怕没有一颗持之以恒的心,只要努力去解决,再大的困难也会迎刃而解。最为重要的是要抓住平时的点点滴滴,注意问题的积累,和知识的应用。参考文献计算机网络(第四版), 谢希仁,北京:电子工业出版社,2003Visual Basic 6.0 程序设计与开发技术大全,求是科技 编著,人民邮电出版社,2004Visual Basic开发技术大全,明日科技 高春艳 刘彬彬 王斌,人民邮电出版社,200721天学通Visual Basic,胡小江,电子工业出版社,200929

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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