版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- videoconferencing on personal computers with tcp_ip
- tcp_ip課程設(shè)計(jì)---基于套接字的客戶機(jī)服務(wù)器程序設(shè)計(jì)
- 基于tcp_ip協(xié)議的網(wǎng)絡(luò)安全策略
- 基于tcp_ip協(xié)議棧的嵌入式系統(tǒng)通信方案設(shè)計(jì)
- java基于tcp_ip協(xié)議的聊天工具的設(shè)計(jì)與開發(fā)畢業(yè)設(shè)計(jì)
- tcp傳輸程序課程設(shè)計(jì)
- tcp課程設(shè)計(jì)--網(wǎng)絡(luò)聊天室
- 網(wǎng)絡(luò)課程設(shè)計(jì)--發(fā)送tcp數(shù)據(jù)包
- 解析ip數(shù)據(jù)包課程設(shè)計(jì)
- java課程設(shè)計(jì)-校園ip查詢系統(tǒng)
- tcp課程設(shè)計(jì)--網(wǎng)絡(luò)拓?fù)錁?gòu)建與協(xié)議分析
- tcp-ip協(xié)議物理層和數(shù)據(jù)鏈路層--計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)
- 2windows環(huán)境下tcp/ip協(xié)議的配置tcp/ip診斷
- 2windows環(huán)境下tcp/ip協(xié)議的配置tcp/ip診斷
- TCP-IP協(xié)議加速引擎設(shè)計(jì).pdf
- tcp ip基礎(chǔ)教程
- 發(fā)現(xiàn)服務(wù)器已開啟的tcp服務(wù)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)--基于tcp端口掃描程序
- 課程設(shè)計(jì)--基于cs結(jié)構(gòu)的套接字程序設(shè)計(jì)(tcp)
- 同步tcp網(wǎng)絡(luò)五子棋-課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論