2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  計(jì)算機(jī)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)</p><p>  《網(wǎng)絡(luò)工程案例教學(xué)及綜合實(shí)踐》報(bào)告</p><p> ?。?012/2013學(xué)年 第一學(xué)期)</p><p>  學(xué)生姓名: </p><p>  學(xué)生班級(jí): </p><p>  學(xué)生學(xué)號(hào): </p&

2、gt;<p>  指導(dǎo)教師: </p><p><b>  2013年1月3日</b></p><p><b>  目錄</b></p><p><b>  一.設(shè)計(jì)目的:1</b></p><p><b>  二.設(shè)計(jì)內(nèi)容:

3、1</b></p><p><b>  三.原理分析:1</b></p><p>  3.1套接字的概念:1</p><p>  3.2 WinSock應(yīng)用程序接口:2</p><p>  3.3 工作模型2</p><p><b>  總體設(shè)計(jì):2</b&g

4、t;</p><p>  4.1基于TCP(面向連接)的Socket編程3</p><p>  4.2基于UDP(面向無連接)的socket編程4</p><p><b>  五.詳細(xì)設(shè)計(jì):4</b></p><p>  六.運(yùn)行結(jié)果:12</p><p><b>  一.設(shè)計(jì)目

5、的:</b></p><p>  理解客戶機(jī)/服務(wù)器模型的工作原理;</p><p><b>  掌握套接字的概念;</b></p><p>  掌握基于套接字的面向連接和無連接客戶機(jī)/服務(wù)器程序的設(shè)計(jì)原理和相關(guān)的WinSock API函數(shù);</p><p>  掌握基于TCP和UDP的程序設(shè)計(jì)方法。<

6、/p><p><b>  二.設(shè)計(jì)內(nèi)容:</b></p><p>  基于TCP的應(yīng)用編程:編寫一個(gè)Client/Server程序?qū)?,服?wù)器程序負(fù)責(zé)接收客戶機(jī)進(jìn)程的連接請(qǐng)求,并在服務(wù)器進(jìn)程與客戶機(jī)進(jìn)程之間建立通信連接,然后接收客戶機(jī)進(jìn)程的傳送數(shù)據(jù)并將其顯示在服務(wù)器端,同時(shí)將歡迎信息發(fā)送給客戶機(jī)進(jìn)程,最后關(guān)閉該客戶機(jī)進(jìn)程的連接;客戶機(jī)進(jìn)程首先提出對(duì)指定服務(wù)器的連接請(qǐng)求,建立

7、連接后向服務(wù)器進(jìn)程發(fā)送已經(jīng)建立連接的數(shù)據(jù)信息,同時(shí)接收服務(wù)器進(jìn)程發(fā)送過來的數(shù)據(jù)并顯示在客戶端。采用WinSock API實(shí)現(xiàn)代碼。</p><p>  基于UDP的應(yīng)用編程:實(shí)現(xiàn)一個(gè)基于UDP的客戶機(jī)/服務(wù)器程序,通過設(shè)定不同的命令行參數(shù)來確定應(yīng)用進(jìn)程的不同角色,即充當(dāng)客戶機(jī)進(jìn)程還是服務(wù)器進(jìn)程。當(dāng)兩個(gè)進(jìn)程運(yùn)行后,彼此之間可以輪流發(fā)送消息,對(duì)方接收后顯示出來。</p><p><b&g

8、t;  三.原理分析:</b></p><p>  3.1套接字的概念:</p><p>  套接字(Socket) 1. Socket的出現(xiàn),使得程序員可以很方便的訪問TCP/IP,從而開發(fā)各種網(wǎng)絡(luò)應(yīng)用的程序 2. 套接字存在于通信區(qū)域中,通信區(qū)域也叫地址族,他是一個(gè)抽象的概念,主要用于通過套接字通信的進(jìn)程的共有特性綜合在一起。套接字通常只與同一個(gè)區(qū)域的套接字交換數(shù)據(jù)。

9、套接字的類型 1. 流式套接字(SOCK_STREAM) 提供面向連接的,可靠的數(shù)據(jù)傳輸服務(wù),數(shù)據(jù)無差錯(cuò),無重復(fù)的發(fā)送,且按發(fā)送的順序接收,基于TCP協(xié)議 ;2. 數(shù)據(jù)保式套接字(SOCK_DGRAM) 提供無連接的服務(wù),數(shù)據(jù)包以獨(dú)立包形式發(fā)送,不提供無錯(cuò)誤的保證,數(shù)據(jù)可能丟失或重復(fù),且接收順序混亂,基于UDP協(xié)議。</p><p>  3.2 WinSock應(yīng)用程序接口:</p><

10、;p>  WinSock是一個(gè)基于套接字模型的API(應(yīng)用程序接口),在Microsoft Windows操作系統(tǒng)類中使用。它在Berkekley接口函數(shù)的基礎(chǔ)上,還增加了基于消息驅(qū)動(dòng)機(jī)制的Windows擴(kuò)展函數(shù)。其中WinSock 1.1只支持TCP/IP網(wǎng)絡(luò),WinSock2.0則增加了對(duì)更多協(xié)議的支持。WinSock包括以下3類的函數(shù):</p><p>  1.WinSock API包含的Berkel

11、ey Socket函數(shù)。這類函數(shù)分兩部分,其一是用于網(wǎng)絡(luò)I/P的函數(shù);其二是不涉及網(wǎng)絡(luò)I/O,在本地端完成的函數(shù)。</p><p>  2.檢索有關(guān)域名,通信服務(wù)和協(xié)議等Internet信息的數(shù)據(jù)庫函數(shù)。</p><p>  3.Berkekley Socket API的Windows轉(zhuǎn)用的擴(kuò)展函數(shù)。</p><p><b>  3.3 工作模型</

12、b></p><p>  網(wǎng)絡(luò)應(yīng)用程序一般是以客戶機(jī)/服務(wù)器的模型的方式工作的。而因特網(wǎng)便是客戶機(jī)/服務(wù)器模型的一個(gè)典型應(yīng)用。在這種工作方式中,一個(gè)服務(wù)器程序通常事先啟動(dòng),并在一個(gè)熟知端口偵聽對(duì)服務(wù)器的請(qǐng)求,如FTP服務(wù)器,Web服務(wù)器等。當(dāng)客戶機(jī)應(yīng)用程序需要某種服務(wù)時(shí),需向提供這種服務(wù)的服務(wù)器發(fā)出請(qǐng)求,服務(wù)器在接收到請(qǐng)求后,向客戶機(jī)發(fā)出相應(yīng)請(qǐng)求信息。這樣客戶機(jī)應(yīng)用程序和服務(wù)器程序之間便建立了通信連接,此后

13、可以進(jìn)行數(shù)據(jù)通信。通信任務(wù)完成后需要關(guān)閉它們之間的通信連接?;赥CP(面向連接)和基于UDP(面向非連接)應(yīng)用程序的工作流程如下所示:</p><p><b>  四.總體設(shè)計(jì):</b></p><p>  4.1基于TCP(面向連接)的Socket編程:服務(wù)器端順序: 1. 加載套接字庫 2. 創(chuàng)建套接字(socket) 3. 將套接字綁定到一個(gè)本地地址和

14、端口上(bind) 4. 將套接字設(shè)為監(jiān)聽模式,準(zhǔn)備接收客戶請(qǐng)求(listen) 5. 等待客戶請(qǐng)求的到來;當(dāng)請(qǐng)求帶來后,接受連接請(qǐng)求,返回一個(gè)新的對(duì)應(yīng)于此次連接的套接字(accept) 6. 用返回的套接字和客戶端進(jìn)行通信(send/recv) 7. 返回,等待另一個(gè)客戶請(qǐng)求 8. 關(guān)閉套接字(closesocket) 客戶端程序: 1. 加載套接字庫 2. 創(chuàng)建套接字(socket) 3. 向服務(wù)器發(fā)送連接請(qǐng)求(c

15、onnect) 4. 和服務(wù)器端進(jìn)行通信(send/receive) 5. 關(guān)閉套接字(closesocket) 4.2基于UDP(面向無連接)的socket編程 :服務(wù)器端(接收端)程序: 1. 加載套接字庫 2. 創(chuàng)建套接字(socket) 3. 將套接字綁定到一個(gè)本地地址和端口上(bind) 4. 等待接收數(shù)據(jù)(recvfrom) 5. 關(guān)閉套接字(closesocket)</p><p>

16、;<b>  五.詳細(xì)設(shè)計(jì):</b></p><p>  (一).基于TCP的服務(wù)器/客戶機(jī)程序:</p><p>  服務(wù)器端TCPserver.cpp:</p><p>  #include<winsock2.h></p><p>  #include<iostream></p>

17、<p>  using namespace std;</p><p>  #include <string.h></p><p>  void main() </p><p><b>  { </b></p><p>  //加載套接字(winsock)庫</p><p>

18、  WORD wVersionRequested; </p><p>  WSADATA wsaData; </p><p><b>  int err; </b></p><p>  wVersionRequested = MAKEWORD( 2, 2 ); //版本號(hào)為2.2</p><p>  err = WSAS

19、tartup( wVersionRequested, &wsaData ); </p><p>  if ( err != 0 ) { </p><p><b>  return; </b></p><p><b>  } </b></p><p>  if ( LOBYTE( wsaDat

20、a.wVersion ) != 2 || </p><p>  HIBYTE( wsaData.wVersion ) != 2 ) { </p><p>  WSACleanup( ); </p><p><b>  return; </b></p><p><b>  } </b></p&g

21、t;<p><b>  //創(chuàng)建套接字 </b></p><p>  SOCKET sockServer=socket(AF_INET,SOCK_STREAM,0); //SOCK_STREAM參數(shù)設(shè)置為TCP連接 </p><p>  SOCKADDR_IN addrServer; //設(shè)置服務(wù)器端套接字的相關(guān)屬性 </p><p&

22、gt;  addrServer.sin_addr.S_un.S_addr=htonl(INADDR_ANY); //設(shè)置IP </p><p>  addrServer.sin_family=AF_INET; </p><p>  addrServer.sin_port=htons(5000); //設(shè)置端口號(hào) </p><p>  //將套接字綁定到本地地址和指定

23、端口上 </p><p>  bind(sockServer,(SOCKADDR*)&addrServer,sizeof(SOCKADDR)); </p><p>  //將套接字設(shè)置為監(jiān)聽模式,并將最大請(qǐng)求連接數(shù)設(shè)置成5,超過此數(shù)的請(qǐng)求全部作廢 </p><p>  listen(sockServer,5); </p><p>  

24、SOCKADDR_IN addrClient; //用來接收客戶端的設(shè)置,包括IP和端口 </p><p>  int len=sizeof(SOCKADDR); </p><p>  while(1) //不斷監(jiān)聽 </p><p><b>  { </b></p><p>  //得到創(chuàng)建連接后的一個(gè)新的套接字,用來

25、和客戶端進(jìn)行溝通,原套接字繼續(xù)監(jiān)聽客戶的連接請(qǐng)求 </p><p>  SOCKET sockConn=accept(sockServer,(SOCKADDR*)&addrClient, &len); </p><p>  if(sockConn!=INVALID_SOCKET) //創(chuàng)建成功 </p><p><b>  { </b

26、></p><p>  char sendInfo[100]; </p><p>  //inet_ntoa將結(jié)構(gòu)轉(zhuǎn)換為十進(jìn)制的IP地址字符串 </p><p>  sprintf(sendInfo,"welcome %s to this test!",inet_ntoa(addrClient.sin_addr)); </p>

27、<p>  //成功建立連接后向客戶端發(fā)送數(shù)據(jù),結(jié)果將顯示在客戶端上 </p><p>  send(sockConn,sendInfo,strlen(sendInfo)+1,0); </p><p>  //從客戶端接收數(shù)據(jù),結(jié)果顯示在服務(wù)器上 </p><p>  char recvInfo[100]; </p><p>  

28、recv(sockConn,recvInfo,100,0); </p><p>  printf("%s\n",recvInfo); </p><p>  //將本次建立連接中得到套接字關(guān)閉 </p><p>  closesocket(sockConn); </p><p><b>  } </b>

29、</p><p><b>  else </b></p><p><b>  { </b></p><p>  int errCode=WSAGetLastError(); </p><p>  printf("the errcode is:%d\n",errCode); <

30、;/p><p><b>  } </b></p><p><b>  } </b></p><p>  //如果本程序不是死循環(huán),那么在此處還應(yīng)添加以下代碼: </p><p>  closesocket(sockServer); //對(duì)一直處于監(jiān)聽狀態(tài)的套接字進(jìn)行關(guān)閉 </p><

31、p>  WSACleanup(); //終止對(duì)winsocket庫的使用 </p><p><b>  }</b></p><p>  客戶端TCPclient.cpp:</p><p>  #include<winsock2.h></p><p>  #include<iostream>&

32、lt;/p><p>  using namespace std;</p><p>  #include <string.h></p><p>  void main() </p><p><b>  { </b></p><p><b>  //加載套接字庫 </b>

33、</p><p>  WORD wVersionRequested; </p><p>  WSADATA wsaData; </p><p><b>  int err; </b></p><p>  wVersionRequested = MAKEWORD( 2, 2 ); //版本號(hào)為2.2 </p>

34、<p>  err = WSAStartup( wVersionRequested, &wsaData ); </p><p>  if ( err != 0 ) { </p><p><b>  return; </b></p><p><b>  } </b></p><p>

35、;  if ( LOBYTE( wsaData.wVersion ) != 2 || </p><p>  HIBYTE( wsaData.wVersion ) != 2 ) { </p><p>  WSACleanup( ); </p><p><b>  return; </b></p><p><b>

36、  } </b></p><p>  SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0); //SOCK_STREAM參數(shù)設(shè)置為TCP連接 </p><p>  SOCKADDR_IN addrServer; //服務(wù)器地址結(jié)構(gòu) </p><p>  addrServer.sin_addr.S_un.S_add

37、r=inet_addr("127.0.0.1"); //服務(wù)器地址 </p><p>  addrServer.sin_port=htons(5000); //服務(wù)器端口號(hào) </p><p>  addrServer.sin_family=AF_INET; </p><p>  //與服務(wù)器端建立連接,進(jìn)行通信 </p><p

38、>  int connReult=connect(sockClient,(SOCKADDR*)&addrServer,sizeof(SOCKADDR)); </p><p>  if(connReult!=WSAEADDRNOTAVAIL) //訪問成功 </p><p><b>  { </b></p><p>  //成功建立

39、連接后向服務(wù)器端發(fā)送數(shù)據(jù),結(jié)果將顯示在服務(wù)器端上 </p><p>  send(sockClient,"this is lisi!",strlen("this is zhangsan!")+1,0); </p><p>  //接收來自服務(wù)器端發(fā)送來的信息 </p><p>  char recvInfo[100]; <

40、;/p><p>  recv(sockClient,recvInfo,100,0); </p><p>  printf("%s\n",recvInfo); </p><p><b>  } </b></p><p><b>  else </b></p><p&

41、gt;<b>  { </b></p><p>  int errCode=WSAGetLastError(); </p><p>  printf("the errcode is:%d\n",errCode); </p><p><b>  } </b></p><p>  c

42、losesocket(sockClient); </p><p>  WSACleanup(); </p><p><b>  }</b></p><p>  (二)基于UDP的服務(wù)器/客戶機(jī)程序:</p><p>  服務(wù)端UDPserver.cpp:</p><p>  #include &l

43、t;winsock2.h></p><p>  #include <iostream></p><p>  using namespace std;</p><p>  void main() </p><p><b>  { </b></p><p>  //加載套接字(win

44、sock)庫,加載這段代碼拷貝于MSDN中WSAStartup的介紹 </p><p>  WORD wVersionRequested; </p><p>  WSADATA wsaData; </p><p><b>  int err; </b></p><p>  wVersionRequested = MAKE

45、WORD( 2, 2 ); //版本號(hào)為2.2 </p><p>  err = WSAStartup( wVersionRequested, &wsaData ); </p><p>  if ( err != 0 ) { </p><p><b>  return; </b></p><p><b>

46、;  } </b></p><p>  if ( LOBYTE( wsaData.wVersion ) != 2 || </p><p>  HIBYTE( wsaData.wVersion ) != 2 ) { </p><p>  WSACleanup( ); </p><p><b>  return; </

47、b></p><p><b>  } </b></p><p><b>  //創(chuàng)建套接字 </b></p><p>  //注意第二個(gè)參數(shù)和TCP設(shè)置不同 </p><p>  SOCKET sockServer=socket(AF_INET,SOCK_DGRAM,0); </p>

48、;<p>  SOCKADDR_IN addrServer; //設(shè)置服務(wù)器端套接字的地址結(jié)構(gòu)的相關(guān)屬性 </p><p>  addrServer.sin_addr.S_un.S_addr=htonl(INADDR_ANY); //設(shè)置IP </p><p>  addrServer.sin_family=AF_INET; </p><p>  ad

49、drServer.sin_port=htons(6000); //設(shè)置端口號(hào) </p><p>  //將套接字和服務(wù)器地址結(jié)構(gòu)綁定 </p><p>  bind(sockServer,(SOCKADDR*)&addrServer,sizeof(SOCKADDR)); </p><p>  SOCKADDR_IN addrClient; </p>

50、;<p>  int len=sizeof(SOCKADDR); </p><p>  char recvBuf[100]; </p><p>  char tempBuf[100]; </p><p>  char sendBuf[100]; </p><p><b>  while(1) </b><

51、;/p><p><b>  { </b></p><p>  //從客戶端接收數(shù)據(jù) </p><p>  int result=recvfrom(sockServer,recvBuf,100,0,(SOCKADDR *)&addrClient,&len); </p><p>  if(result==SOCK

52、ET_ERROR) </p><p><b>  { </b></p><p>  int errCode=WSAGetLastError(); </p><p>  printf("error:%d",errCode); </p><p>  break; //退出循環(huán) </p>&l

53、t;p><b>  } </b></p><p><b>  else </b></p><p><b>  { </b></p><p>  if(recvBuf[0]=='q') //對(duì)方請(qǐng)求退出 </p><p><b>  { </

54、b></p><p>  //同樣將退出請(qǐng)求發(fā)送回去 </p><p>  sendto(sockServer,"q",strlen("q")+1,0,(SOCKADDR*)& addrClient,sizeof(SOCKADDR)); </p><p>  printf("the chat end!&

55、quot;); </p><p><b>  break; </b></p><p><b>  } </b></p><p><b>  else </b></p><p><b>  { </b></p><p>  //將對(duì)方

56、發(fā)送過來的信息前段加上IP地址進(jìn)行輸出 </p><p>  sprintf(tempBuf,"%s said:%s",inet_ntoa(addrClient.sin_addr),recvBuf); </p><p>  printf("%s\n",tempBuf); </p><p>  //將用戶的鍵盤輸入發(fā)送到對(duì)方 &

57、lt;/p><p>  printf("pleas input the message:\n"); </p><p>  gets(sendBuf); //得到鍵盤輸入內(nèi)容 </p><p>  sendto(sockServer,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)& addrClient,size

58、of(SOCKADDR)); </p><p><b>  } </b></p><p><b>  } </b></p><p><b>  } </b></p><p>  closesocket(sockServer); </p><p>  WS

59、ACleanup(); </p><p><b>  }</b></p><p>  客戶端UDPclient.cpp:</p><p>  #include <winsock2.h></p><p>  #include <iostream></p><p>  usin

60、g namespace std;</p><p>  void main() </p><p><b>  { </b></p><p>  //加載套接字(winsock)庫,加載這段代碼拷貝于MSDN中WSAStartup的介紹 </p><p>  WORD wVersionRequested; </p>

61、;<p>  WSADATA wsaData; </p><p><b>  int err; </b></p><p>  wVersionRequested = MAKEWORD( 2, 2 ); //版本號(hào)為2.2 </p><p>  err = WSAStartup( wVersionRequested, &ws

62、aData ); </p><p>  if ( err != 0 ) { </p><p><b>  return; </b></p><p><b>  } </b></p><p>  if ( LOBYTE( wsaData.wVersion ) != 2 || </p>&

63、lt;p>  HIBYTE( wsaData.wVersion ) != 2 ) { </p><p>  WSACleanup( ); </p><p><b>  return; </b></p><p><b>  } </b></p><p><b>  //創(chuàng)建套接字 &l

64、t;/b></p><p>  SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0); //注意第二個(gè)參數(shù)和TCP設(shè)置不同 </p><p>  SOCKADDR_IN addrServer; //服務(wù)器地址結(jié)構(gòu) </p><p>  addrServer.sin_addr.S_un.S_addr=inet_addr(&

65、quot;127.0.0.1"); //服務(wù)器地址 </p><p>  addrServer.sin_family=AF_INET; </p><p>  addrServer.sin_port=htons(6000); //服務(wù)器端口號(hào) </p><p>  char tempBuf[100]; </p><p>  char

66、recvBuf[100]; </p><p>  char sendBuf[100]; </p><p>  int len=sizeof(SOCKADDR); </p><p><b>  while(1) </b></p><p><b>  { </b></p><p>

67、;  printf("plese input the message:\n"); </p><p>  gets(sendBuf); //得到用戶的鍵盤輸入 </p><p>  sendto(sockClient,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrServer,sizeof(SOCKADDR)); <

68、/p><p>  int result=recvfrom(sockClient,recvBuf,100,0,(SOCKADDR *)&addrServer,&len); </p><p>  if(result==SOCKET_ERROR) </p><p><b>  { </b></p><p>  in

69、t errCode=WSAGetLastError(); </p><p>  printf("error:%d",errCode); </p><p>  break; //退出循環(huán) </p><p><b>  } </b></p><p><b>  else </b>&l

70、t;/p><p><b>  { </b></p><p>  if(recvBuf[0]=='q') //對(duì)方請(qǐng)求退出 </p><p><b>  { </b></p><p>  //同樣將退出請(qǐng)求發(fā)送回去 </p><p>  sendto(sockCli

71、ent,"q",strlen("q")+1,0,(SOCKADDR*)& addrServer,sizeof(SOCKADDR)); </p><p>  printf("the chat end!"); </p><p><b>  break; </b></p><p>&

72、lt;b>  } </b></p><p><b>  else </b></p><p><b>  { </b></p><p>  //將對(duì)方發(fā)送過來的信息前段加上IP地址進(jìn)行輸出 </p><p>  sprintf(tempBuf,"%s said:%s&quo

73、t;,inet_ntoa(addrServer.sin_addr),recvBuf); </p><p>  printf("%s\n",tempBuf); </p><p><b>  } </b></p><p><b>  } </b></p><p><b> 

74、 } </b></p><p>  closesocket(sockClient); </p><p>  WSACleanup(); </p><p><b>  }</b></p><p><b>  六.運(yùn)行結(jié)果:</b></p><p>  程序運(yùn)行結(jié)果如

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論