![軟件開發(fā)實習(xí)講義-基于C-S模式的軟件開發(fā)(題目)_第1頁](http://file4.renrendoc.com/view/55c7da32e741e93bae3b2703c6a73200/55c7da32e741e93bae3b2703c6a732001.gif)
![軟件開發(fā)實習(xí)講義-基于C-S模式的軟件開發(fā)(題目)_第2頁](http://file4.renrendoc.com/view/55c7da32e741e93bae3b2703c6a73200/55c7da32e741e93bae3b2703c6a732002.gif)
![軟件開發(fā)實習(xí)講義-基于C-S模式的軟件開發(fā)(題目)_第3頁](http://file4.renrendoc.com/view/55c7da32e741e93bae3b2703c6a73200/55c7da32e741e93bae3b2703c6a732003.gif)
![軟件開發(fā)實習(xí)講義-基于C-S模式的軟件開發(fā)(題目)_第4頁](http://file4.renrendoc.com/view/55c7da32e741e93bae3b2703c6a73200/55c7da32e741e93bae3b2703c6a732004.gif)
![軟件開發(fā)實習(xí)講義-基于C-S模式的軟件開發(fā)(題目)_第5頁](http://file4.renrendoc.com/view/55c7da32e741e93bae3b2703c6a73200/55c7da32e741e93bae3b2703c6a732005.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
軟件開發(fā)實習(xí)講義提綱實驗題目及要求技術(shù)一:Socket網(wǎng)絡(luò)編程;技術(shù)二:軟件開發(fā)文檔編寫規(guī)范;技術(shù)三:統(tǒng)一建模語言UML;技術(shù)四:RationalRose工具與UML;技術(shù)五:開發(fā)環(huán)境;提綱實驗題目及要求技術(shù)一:Socket網(wǎng)絡(luò)編程;技術(shù)二:軟件開發(fā)文檔編寫規(guī)范;技術(shù)三:統(tǒng)一建模語言UML;技術(shù)四:RationalRose工具與UML;技術(shù)五:開發(fā)環(huán)境;實驗題目及要求【實驗題目】基于客戶端/服務(wù)器模型的軟件開發(fā)【題目概述與總體要求】題目概述:設(shè)計一個XXX網(wǎng)絡(luò)應(yīng)用程序。總體要求:按照分析、設(shè)計、編碼、調(diào)試和測試的軟件開發(fā)過程完成這個應(yīng)用程序;提交需求分析、概要設(shè)計、詳細設(shè)計文檔以及UML設(shè)計文件(其中包括用例圖,類圖,狀態(tài)圖,部署圖)。建議客戶端和服務(wù)器的設(shè)計都使用可視化界面,在界面中加入相應(yīng)的功能按鈕或菜單,便于操作和演示。實驗題目及要求【題目具體要求】客戶端根據(jù)指定的ip地址和端口號連接到服務(wù)器;客戶端可以斷開和服務(wù)器的連接;服務(wù)器可以選定某個已登錄的客戶端,斷開與其的連接;客戶端可以向服務(wù)器發(fā)送文字信息;服務(wù)器要能顯示所有登錄客戶端的ip地址、端口號信息等:服務(wù)器上需要顯示客戶端登錄和斷開的提示信息;服務(wù)器顯示所有登錄客戶端所發(fā)送的文字信息、數(shù)目,及對應(yīng)的客戶端信息,標(biāo)識該文字信息是哪個客戶端發(fā)送;服務(wù)器能夠從所有接收到文字信息中,篩選從某個登錄客戶端發(fā)送的文字信息和數(shù)目??蛻舳丝梢燥@示服務(wù)器發(fā)送的文字信息及其數(shù)目;服務(wù)器可以選定某個已登錄的客戶端,向其發(fā)送文字信息;客戶端可以向服務(wù)器發(fā)送文件。服務(wù)器顯示客戶端發(fā)送的文件數(shù)和當(dāng)前發(fā)送的文件及對應(yīng)客戶端信息。
1~5必須實現(xiàn),6~7為加分需求,8~9選作。實驗題目及要求【編程提示】開發(fā)環(huán)境和編程語言可自由選擇;服務(wù)器設(shè)計一種數(shù)據(jù)結(jié)構(gòu)來維護每一個客戶端的信息,包括socket,IP地址,端口號、收到文字信息的數(shù)目,文字信息,其中的文字信息應(yīng)該設(shè)計成另一個數(shù)據(jù)結(jié)構(gòu)用來存儲一個個文字信息,包括文字字符串、字符串長度。如果能使用數(shù)據(jù)庫存儲,當(dāng)然更好。本題目中要求實現(xiàn)的功能較多,為了更好的開發(fā)調(diào)試,可以將上一個功能實現(xiàn)并測試成功后,再實現(xiàn)其他功能。用表單顯示信息。實驗題目及要求【實驗步驟】根據(jù)題目,撰寫需求分析、概要設(shè)計、詳細設(shè)計文檔;根據(jù)需求,利用RationalRose工具設(shè)計UML建模圖(用例圖、類圖、狀態(tài)圖、部署圖);根據(jù)UML建模圖在開發(fā)環(huán)境中進行軟件開發(fā);實現(xiàn)功能1~5,并進行調(diào)試與測試;實現(xiàn)功能6~7,并進行調(diào)試與測試;有時間的同學(xué)可以實現(xiàn)功能8~9;提交程序源代碼及文檔(包括設(shè)計文檔和UML圖);編寫實驗報告,實習(xí)結(jié)束后1周內(nèi)由班長交齊。實驗題目及要求【實驗報告內(nèi)容】題目要求的所有文檔和設(shè)計圖;設(shè)計的思路和關(guān)鍵數(shù)據(jù)結(jié)構(gòu);測試數(shù)據(jù),包括對于異常情況的處理;軟件使用說明書;在設(shè)計、實現(xiàn)和測試中發(fā)現(xiàn)的問題及解決方案;軟件開發(fā)實習(xí)總結(jié)?!緦嶒炆蠙C要求】開放式上機;第二周的周六、周日集中驗收。提綱實驗題目及要求技術(shù)一:Socket網(wǎng)絡(luò)編程;技術(shù)二:軟件開發(fā)文檔編寫規(guī)范;技術(shù)三:統(tǒng)一建模語言UML;技術(shù)四:RationalRose工具與UML;技術(shù)五:開發(fā)環(huán)境;網(wǎng)絡(luò)編程模型基于有連接網(wǎng)絡(luò)程序的執(zhí)行過程服務(wù)程序啟動客戶程序啟動客戶端與服務(wù)器建立連接客戶端發(fā)送請求服務(wù)器處理請求,返回響應(yīng)服務(wù)器斷開連接,等待下一個請求通常情況下服務(wù)程序一直處于運行狀態(tài)面向連接的方式循環(huán)服務(wù)器模型網(wǎng)絡(luò)編程模型基于TCP編程模型建立連接發(fā)送請求返回響應(yīng)創(chuàng)建網(wǎng)絡(luò)端點(socket)連接客戶端(connect)客戶端發(fā)送請求(write)客戶端接收響應(yīng)(read)客戶端創(chuàng)建網(wǎng)絡(luò)端點(socket)綁定服務(wù)器地址和端口(bind)監(jiān)聽端口(listen)接受客戶端連接(accept)接收客戶端請求(read)回送響應(yīng)(write)服務(wù)器主要內(nèi)容創(chuàng)建網(wǎng)絡(luò)端點-socket連接服務(wù)器-connect綁定服務(wù)器地址和端口-bind監(jiān)聽端口-listen接受客戶端連接-accept關(guān)閉socket-close接收和發(fā)送數(shù)據(jù)-read、write網(wǎng)絡(luò)編程模型基于TCP編程模型建立連接發(fā)送請求返回響應(yīng)創(chuàng)建網(wǎng)絡(luò)端點(socket)連接客戶端(connect)客戶端發(fā)送請求(write)客戶端接收響應(yīng)(read)客戶端創(chuàng)建網(wǎng)絡(luò)端點(socket)綁定服務(wù)器地址和端口(bind)監(jiān)聽端口(listen)接受客戶端連接(accept)接收客戶端請求(read)回送響應(yīng)(write)服務(wù)器基于TCP編程模型什么是套接字創(chuàng)建網(wǎng)絡(luò)端點-socket…//1.創(chuàng)建網(wǎng)絡(luò)端點intsockfd=socket(AF_INET, SOCK_STREAM, 0);if(sockfd==-1){ printf("can;tcreatesocket\n"); exit(1);}… 創(chuàng)建網(wǎng)絡(luò)端點-socket應(yīng)用程序(MSN,QQ,F(xiàn)lashGet…)Socket(STREAM、DGRAM、RAW)網(wǎng)絡(luò)協(xié)議(UNIX、INET、IPX…)物理信道(雙絞線、同軸電纜、電話線、光纜…)Socket(STREAM、DGRAM、RAW)應(yīng)用程序(MSN,QQ,F(xiàn)lashGet…)網(wǎng)絡(luò)協(xié)議(UNIX、INET、IPX…)創(chuàng)建網(wǎng)絡(luò)端點-socketsocket(套接字)網(wǎng)絡(luò)傳輸?shù)亩斯?jié)點支持多種協(xié)議UNIX、INET、IPX支持多種類型流式(STREAM)數(shù)據(jù)報(DGRAM)原始(RAW)創(chuàng)建網(wǎng)絡(luò)端點-socketintsocket(intfamily,inttype,intprotocol)功能:創(chuàng)建socket描述符參數(shù):family(協(xié)議簇):AF_INET、AF_UNIXtype(類型):SOCK_STREAM、SOCK_DGRAM、SOCK_RAWprotocol(協(xié)議):默認為0返回值:>0-socket描述符,-1-失敗,系統(tǒng)全局變量errno為錯誤代碼創(chuàng)建網(wǎng)絡(luò)端點-socketsocket數(shù)據(jù)結(jié)構(gòu)socket描述符協(xié)議簇服務(wù)類型本地IP地址遠程IP地址本地端口遠程端口socket地址socket地址Linux采用通用socket地址兼容各種協(xié)議UNIXINET…通用的地址結(jié)構(gòu):structsockaddr{
/*地址類型AF_xxx*/ u_shortsa_family;
/*協(xié)議地址,不同的協(xié)議地址格式不同*/
char sa_data[14];};socket地址TCP/IP協(xié)議的socket地址structsockaddr_in{short sin_family;/*AF_INET*/
u_short sin_port;/*端口號,網(wǎng)絡(luò)字節(jié)順序*/
structin_addr sin_addr;/*IP地址,網(wǎng)絡(luò)字節(jié)順序*/char sin_zero[8];/*填充字節(jié),必須為全零*/};structin_addr{ union{ struct{u_chars_b1,s_b2,s_b3,s_b4;}S_un_b; struct{u_shorts_w1,s_w2;}S_un_w;
u_longS_addr; }S_un;};socket地址TCP/IP協(xié)議的socket地址常用地址形式(字符串):“127.0.0.1”地址轉(zhuǎn)換函數(shù)inet_aton(constchar*cp,structin_addr*inp);char*inet_ntoa(structin_addrin);//字符串形式地址轉(zhuǎn)換為網(wǎng)絡(luò)地址形式structsockaddr_inaddr;inet_aton(“219.245.78.159”,&addr.sin_addr);//網(wǎng)絡(luò)地址轉(zhuǎn)換為字符串地址形式printf(“%s”,inet_ntoa(addr.sin_addr));字節(jié)順序主機字節(jié)順序(以16位整數(shù)0xA130為例)little-endian順序低字節(jié)在前Intel處理器使用little-endianbig-endian順序高字節(jié)在前sun工作站使用big-endian順序30A130A1字節(jié)順序網(wǎng)絡(luò)字節(jié)順序統(tǒng)一表示方式采用big-endian順序主機字節(jié)順序和網(wǎng)絡(luò)字節(jié)順序的轉(zhuǎn)換unsignedshortinthtons(unsignedshortinthostshort)unsignedlonginthtonl(unsignedlonginthotlong)unsignedshortintntohs(unsignedshortintnetshort)unsignedlongintntohl(unsignedlongintnetlong)socket地址…//指定服務(wù)器地址 structsockaddr_insrvaddr;bzero(&srvaddr,sizeof(srvaddr));srvaddr.sin_family=AF_INET;srvaddr.sin_port=htons(1234);if(inet_aton("127.0.0.1",srvaddr.sin_addr.s_addr)==-1){ printf("addrconverterror\n"); exit(1); }…基于TCP編程模型建立連接發(fā)送請求返回響應(yīng)創(chuàng)建網(wǎng)絡(luò)端點(socket)連接客戶端(connect)客戶端發(fā)送請求(write)客戶端接收響應(yīng)(read)客戶端創(chuàng)建網(wǎng)絡(luò)端點(socket)綁定服務(wù)器地址和端口(bind)監(jiān)聽端口(listen)接受客戶端連接(accept)接收客戶端請求(read)回送響應(yīng)(write)服務(wù)器綁定服務(wù)器地址和端口intbind(intsockfd,structsockaddr*myaddr,intaddrlen);功能:綁定本地地址和端口參數(shù):sockfd-socket描述符myaddr-自己的地址addrlen-地址結(jié)構(gòu)長度返回值:0-成功,-1-失敗,errno為錯誤代碼綁定服務(wù)器地址和端口intbind(intsockfd,structsockaddr*myaddr,intaddrlen);說明服務(wù)器和客戶端都可以綁定socket地址,但通??蛻舳瞬恍枰壎ㄗ约旱膕ocket地址。不綁定地址時系統(tǒng)自動分配一個端口,并用該端口和本機ip地址填充客戶端socket地址.注意INADDR_ANY綁定服務(wù)器地址和端口…//綁定服務(wù)器地址和端口if(bind(sockfd, (structsockaddr*)&srvaddr, sizeof(structsockaddr))==-1){ printf("binderror\n"); exit(1); }…綁定服務(wù)器地址和端口INADDR_ANY綁定任何網(wǎng)絡(luò)設(shè)備接口,適合于多IP主機對于IP地址經(jīng)常變化的情況也適用structsockaddr_insrvaddr;…srvaddr.sin_addr.s_addr=htonl(INADDR_ANY);…基于TCP編程模型建立連接發(fā)送請求返回響應(yīng)創(chuàng)建網(wǎng)絡(luò)端點(socket)連接客戶端(connect)客戶端發(fā)送請求(write)客戶端接收響應(yīng)(read)客戶端創(chuàng)建網(wǎng)絡(luò)端點(socket)綁定服務(wù)器地址和端口(bind)監(jiān)聽端口(listen)接受客戶端連接(accept)接收客戶端請求(read)回送響應(yīng)(write)服務(wù)器基于TCP編程模型如何標(biāo)識一個連接:
IP地址+端口號連接服務(wù)器intconnect(intsockfd,structsockaddr*servaddr,intaddrlen)功能:連接服務(wù)器參數(shù):sockfd-socket描述符servaddr-服務(wù)器地址addrlen-地址結(jié)構(gòu)長度返回值:0-成功,-1-失敗,errno為錯誤代碼連接服務(wù)器intconnect(intsockfd,structsockaddr*servaddr,intaddrlen)說明:對一個socket描述符不能兩次使用connect函數(shù)intsockfd=socket(…);connect(sockfd,…);connect(sockfd,…);×連接服務(wù)器…//連接服務(wù)器if(connect(sockfd, (structsockaddr*)&srvaddr, sizeof(structsockaddr))==-1){ printf("connecterror\n"); exit(1); }…基于TCP編程模型建立連接發(fā)送請求返回響應(yīng)創(chuàng)建網(wǎng)絡(luò)端點(socket)連接客戶端(connect)客戶端發(fā)送請求(write)客戶端接收響應(yīng)(read)客戶端創(chuàng)建網(wǎng)絡(luò)端點(socket)綁定服務(wù)器地址和端口(bind)監(jiān)聽端口(listen)接受客戶端連接(accept)接收客戶端請求(read)回送響應(yīng)(write)服務(wù)器監(jiān)聽端口intlisten(intsockfd,intbacklog)功能:監(jiān)聽本地地址和端口參數(shù):sockfd-已綁定的socket描述符backlog-以完成連接,等待接受的隊列長度返回值0-成功,-1-失敗,errno為錯誤代碼監(jiān)聽端口intlisten(intsockfd,intbacklog)說明執(zhí)行l(wèi)isten函數(shù)后socket轉(zhuǎn)換成被動socket,可以接受連接,TCP協(xié)議為每個偵聽socket維護兩個隊列:未完成連接隊列和已完成連接隊列,backlog指定已完成連接隊列的最大長度服務(wù)器連接請求已完成連接隊列未完成連接隊列accept監(jiān)聽端口…
//監(jiān)聽端口
if(listen(sockfd,BACKLOG)==-1){ printf("listenerror\n"); exit(1); }…基于TCP編程模型建立連接發(fā)送請求返回響應(yīng)創(chuàng)建網(wǎng)絡(luò)端點(socket)連接客戶端(connect)客戶端發(fā)送請求(write)客戶端接收響應(yīng)(read)客戶端創(chuàng)建網(wǎng)絡(luò)端點(socket)綁定服務(wù)器地址和端口(bind)監(jiān)聽端口(listen)接受客戶端連接(accept)接收客戶端請求(read)回送響應(yīng)(write)服務(wù)器接受客戶端連接intaccept(intsockfd,structsockaddr*clientaddr,intaddrlen);功能:接受連接參數(shù):sockfd-socket描述符clientaddr-客戶端地址addrlen-地址結(jié)構(gòu)長度返回值>0-成功,返回新的socket描述符標(biāo)識已接受的連接,-1-失敗,errno為錯誤代碼接受客戶端連接intaccept(intsockfd,structsockaddr*clientaddr,intaddrlen);說明accept函數(shù)返回的socket描述符是真正可以和客戶端通信的socket,服務(wù)器的偵聽socket只接受連接,不能用于通信accept函數(shù)在沒有已完成的連接時將阻塞進程接受客戶端連接…//接受客戶端連接intsin_size=sizeof(structsockaddr_in); intnew_fd=accept(sockfd, (structsockaddr*)&clientaddr, &sin_size); if((new_fd==-1){ printf("accepterrot\n"); continue; }…基于TCP編程模型建立連接發(fā)送請求返回響應(yīng)創(chuàng)建網(wǎng)絡(luò)端點(socket)連接客戶端(connect)客戶端發(fā)送請求(write)客戶端接收響應(yīng)(read)客戶端創(chuàng)建網(wǎng)絡(luò)端點(socket)綁定服務(wù)器地址和端口(bind)監(jiān)聽端口(listen)接受客戶端連接(accept)接收客戶端請求(read)回送響應(yīng)(write)服務(wù)器接收數(shù)據(jù)intread(intfd,char*buf,intlen);功能:從socket讀取數(shù)據(jù)參數(shù):fd-socket描述符buf-接收數(shù)據(jù)緩沖區(qū)len-要讀取數(shù)據(jù)大小返回值n>0andn<=len讀出n個字節(jié)n=0讀通道已關(guān)閉n<0出錯或異常,errno為錯誤代碼阻塞過程中收到中斷信號,返回EINTR讀取完整數(shù)據(jù)的read_all函數(shù)intread_all(intfd,char*buf,intnBytes);{for(;;){rc=read(fd,buf,nBytes);if(rc>0) //讀出rc個字節(jié)
{returnrc;}elseif(rc==0) //讀通道已關(guān)閉
{close(fd);return0;}elseif(errno==EINTR){}else{printf(stderr,“Readerror”);close(fd);return-1;}}//for}基于TCP編程模型建立連接發(fā)送請求返回響應(yīng)創(chuàng)建網(wǎng)絡(luò)端點(socket)連接客戶端(connect)客戶端發(fā)送請求(write)客戶端接收響應(yīng)(read)客戶端創(chuàng)建網(wǎng)絡(luò)端點(socket)綁定服務(wù)器地址和端口(bind)監(jiān)聽端口(listen)接受客戶端連接(accept)接收客戶端請求(read)回送響應(yīng)(write)服務(wù)器發(fā)送數(shù)據(jù)intwrite(intfd,char*buf,intlen);功能:從socket讀取數(shù)據(jù)參數(shù):fd-socket描述符buf-發(fā)送數(shù)據(jù)緩沖區(qū)len-要發(fā)送數(shù)據(jù)大小返回值≥0-成功,-1-失敗,errno為錯誤代碼發(fā)送數(shù)據(jù)intwrite(intfd,char*buf,intlen);說明系統(tǒng)發(fā)送緩沖區(qū)中空間大于參數(shù)len時返回len發(fā)送緩沖區(qū)中空間小于參數(shù)len時write函數(shù)阻塞write函數(shù)阻塞時可能因為下列原因返回發(fā)送緩沖區(qū)中空間大于參數(shù)len連接被復(fù)位,返回錯誤阻塞過程中收到中斷信號,返回EINTRwrite_all函數(shù)intwrite_all(intfd,char*buf,intnBytes);{for(;;){wc=write(sockfd,buf,nBytes);if(wc>0)returnwc;elseif(errno==EINTR){}//收到中斷信號
else{printf(stderr,“Writeerror”);close(sockfd);return-1;}}//for}關(guān)閉socketintclose(intsockfd)功能:關(guān)閉socket參數(shù):sockfd-socket描述符返回值0-成功,-1-失敗,errno為錯誤代碼說明調(diào)用close只是將對sockfd的引用減1,直到對sockfd的引用為0時才清除sockfd,TCP協(xié)議將繼續(xù)使用sockfd,直到所有數(shù)據(jù)發(fā)送完成必須的頭文件#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<errno.h>#include<stdio.h>#include<stdlib.h>主要內(nèi)容UDPSocket編程原始socket編程UDPSocket編程UDPsocket編程模型阻塞,等待客戶端UDP數(shù)據(jù)包socketbindrecvfromsendtosocketrecvfromsendto處理客戶端請求close客戶端服務(wù)器阻塞,等待服務(wù)器UDP數(shù)據(jù)包UDPSocket編程intrecvfrom(intsockfd,void*buf,intlen,unsignedcharflags,structsocketaddr*from,socklen_t*addrlen);功能:接收UDP數(shù)據(jù)包參數(shù):前4個參數(shù)和recv相同from-發(fā)送者socket地址,NULL表示不需要addrlen-socket地址長度,from為NULL時必須置為NULL返回值:>=0成功,-1失敗UDPSocket編程recvfrom函數(shù)說明:UDP協(xié)議給每個UDPSOCKET設(shè)置一個接收緩沖區(qū),每一個收到的數(shù)據(jù)報根據(jù)其端口放在不同緩沖區(qū)。recvfrom函數(shù)每次從接收緩沖區(qū)隊列取回一個數(shù)據(jù)報,沒有數(shù)據(jù)報時將阻塞,返回值為0表示收到長度為0的空數(shù)據(jù)報,不表示對方已結(jié)束發(fā)送
…recvfromUDP數(shù)據(jù)報UDPSocket編程intsendto(intsockfd,constvoid*buf,intlen,unsignedcharflags,structsocketaddr*to,inttolen);功能:發(fā)送UDP數(shù)據(jù)包參數(shù):前4個參數(shù)和send相同to-接收者socket地址addrlen-socket地址長度返回值:>=0成功,-1失敗UDPSocket編程sendto函數(shù)說明:每次調(diào)用sendto都必須指明接收方socket地址,UDP協(xié)議沒有設(shè)置發(fā)送緩沖區(qū),sendto將數(shù)據(jù)報拷貝到系統(tǒng)緩沖區(qū)后返回,通常不會阻塞允許發(fā)送空數(shù)據(jù)報,此時sendto返回值為0UDPSocket編程UDP服務(wù)器示例UDP服務(wù)器特點服務(wù)器不接受客戶端連接,只需監(jiān)聽端口循環(huán)服務(wù)器,可以交替處理各個客戶端數(shù)據(jù)包,不會被一個客戶端獨占udpserverudp協(xié)議udpclientudp協(xié)議udpclientudp協(xié)議數(shù)據(jù)包數(shù)據(jù)包UDPSocket編程udp客戶端特點客戶端不用建立連接,第一次調(diào)用sendto函數(shù)時,UDP協(xié)議為這個UDPsocket選擇一個端口號,以后的發(fā)送和接收操作均使用這個端口號客戶端可以接收來自任何主機的數(shù)據(jù)報客戶端可能永遠阻塞(服務(wù)器主機崩潰)UDPSocket編程有連接的udpsocket在udpsocket上調(diào)用connect函數(shù),但不會產(chǎn)生3次握手過程,只記錄連接另一方的IP和端口,connect函數(shù)立即返回特點:發(fā)送UDP數(shù)據(jù)報時不用指定服務(wù)器地址只能接收來自指定服務(wù)器的數(shù)據(jù)報UDPSocket編程有連接的udpsocket錯誤返回情況數(shù)據(jù)報成功到達服務(wù)器,但服務(wù)器接收緩沖區(qū)已滿,丟棄該數(shù)據(jù)報,不返回錯誤數(shù)據(jù)報成功到達服務(wù)器,但服務(wù)器并沒有在該端口上提供服務(wù),UDP協(xié)議丟棄數(shù)據(jù)報返回ICMP錯誤消息,客戶端主機接收到這個ICMP消息后將以異步方式向客戶端返回一個ECONNRESET錯誤UDPSocket編程有連接的udpsocket斷開有連接的udpsocketudpsocket允許對一個socket多次調(diào)用connect函數(shù),每次調(diào)用connect函數(shù)將釋放原來綁定的地址,綁定到新地址利用connect函數(shù)綁定一個特殊地址可以斷開之前的udp連接structsockaddr_inaddr;……..addr.sin_family=AF_UNSPEC;…….connect(sockfd,(structsockaddr*)&addr,sizeof(addr));UDPSocket編程使用UDPSocket的說明UDP協(xié)議不保證數(shù)據(jù)報可靠到達用超時和重發(fā)機制處理丟失的數(shù)據(jù)報用數(shù)據(jù)報序列號區(qū)分重復(fù)數(shù)據(jù)報UDP協(xié)議不保證數(shù)據(jù)報順序到達UDP協(xié)議沒有流量控制可以由程序維護一個發(fā)送緩沖區(qū),將數(shù)據(jù)報保存在該緩沖區(qū),直到收到確認才清除,當(dāng)用戶緩沖區(qū)滿時不再發(fā)送數(shù)據(jù)報原始socket編程概述TCP和UDPSocket對TCP和UDP協(xié)議做了封裝,簡化了編程接口,但失去了對IP數(shù)據(jù)包操作的靈活性原始socket直接針對IP數(shù)據(jù)包編程,具有更強的靈活性,能夠訪問ICMP和IGMP數(shù)據(jù)包可以編寫基于IP協(xié)議的高層協(xié)議原始socket編程創(chuàng)建原始socketintsocket(intfamily,inttype,intprotocol)參數(shù):family-AF_INETtype-SOCK_RAWprotocolIPPROTO_ICMP-ICMP數(shù)據(jù)包IPPROTO_IGMP-IGMP數(shù)據(jù)包IPPROTO_IP-IP數(shù)據(jù)包原始socket編程設(shè)置IP選項是否自動填充IP首部on=0,由協(xié)議自動填充on=1,用戶程序填充inton=1;setsockopt(sockfd,IPPROTO_IP,IP_HDRINCL,&on,sizeof(on)原始socket編程綁定本地IP地址使用bind函數(shù)綁定本地IP地址發(fā)送的IP數(shù)據(jù)包的源地址就是bind綁定的地址不調(diào)用bind函數(shù)時將以主網(wǎng)絡(luò)接口IP地址為源地址如果設(shè)置了IP選項IP_HDRINCL,bind函數(shù)將不起作用,必須手工填充每個IP數(shù)據(jù)包的源地址原始socket編程綁定對方IP地址使用connect函數(shù)綁定對方地址發(fā)送的IP數(shù)據(jù)包目的地址就是connect綁定的對方地址用connect綁定對方地址后可以使用函數(shù)write和send發(fā)送IP數(shù)據(jù)包不調(diào)用connect函數(shù),每次發(fā)送IP數(shù)據(jù)包必須使用sendto函數(shù)指定對方IP地址原始socket編程發(fā)送數(shù)據(jù)包沒有調(diào)用connect函數(shù)綁定對方地址時必須用sendto或sendmsg發(fā)送數(shù)據(jù)包;調(diào)用connect綁定對方IP地址之后可以使用write、send發(fā)送數(shù)據(jù)包沒有設(shè)置IP_HDRINCL選項時只能填充IP數(shù)據(jù)包的數(shù)據(jù)區(qū);設(shè)置了IP_HDRINCL選項后可以填充IP數(shù)據(jù)包首部和數(shù)據(jù)區(qū),但內(nèi)核總是計算和填充校驗和原始socket編程接收數(shù)據(jù)包UDP和TCP數(shù)據(jù)包不傳送到原始socket大多數(shù)ICMP數(shù)據(jù)包(echo響應(yīng),timestamp響應(yīng),mask響應(yīng))的拷貝將傳遞給匹配的原始socket其他類型的數(shù)據(jù)包的拷貝傳遞給匹配的原始socket內(nèi)核不能識別的IP數(shù)據(jù)包將傳送給匹配的原始socket原始socket編程原始socket接收過程IP協(xié)議ICMP協(xié)議ICMP類型原始socket其他原始socketICMP數(shù)據(jù)包內(nèi)核不處理的協(xié)議數(shù)據(jù)包原始socket編程原始socket編程示例PING程序:ICMP協(xié)議版本ping程序原理ping程序發(fā)送ICMP應(yīng)答請求數(shù)據(jù)包,數(shù)據(jù)區(qū)中包含發(fā)送時間對方主機回送ICMP應(yīng)答響應(yīng)數(shù)據(jù)包,數(shù)據(jù)區(qū)內(nèi)容保持不變ping程序受到ICMP應(yīng)答響應(yīng)數(shù)據(jù)包,將數(shù)據(jù)區(qū)內(nèi)的發(fā)送時間和當(dāng)前時間比較,得到時間差,即ICMP數(shù)據(jù)包的往返時間原始socket編程原始socket編程示例ICMP數(shù)據(jù)包格式類型:8-echorequest,0-echoresponse校驗和:采用IP校驗和計算方法標(biāo)識符:進程號序列號:從0開始,依次加1類型(8/0)代碼(0)校驗和標(biāo)識符序列號數(shù)據(jù)(時間戳)原始socket編程原始socket編程示例相關(guān)數(shù)據(jù)結(jié)構(gòu)structicmphdr{ __u8 type; __u8 code; __u16 checksum; union{ struct{ __u16 id; __u16 sequence; }echo; struct{ __u16 __unused; __u16 mtu; }frag; }un;};提綱實驗題目及要求技術(shù)一:Socket網(wǎng)絡(luò)編程;技術(shù)二:軟件開發(fā)文檔編寫規(guī)范;技術(shù)三:統(tǒng)一建模語言UML;技術(shù)四:RationalRose工具與UML;技術(shù)五:開發(fā)環(huán)境;撰寫需求分析文檔需求分析文檔模板(僅供參考)撰寫概要設(shè)計文檔概要設(shè)計文檔模板(僅供參考)撰寫詳細設(shè)計文檔詳細設(shè)計文檔模板(僅供參考)提綱實驗題目及要求技術(shù)一:Socket網(wǎng)絡(luò)編程;技術(shù)二:軟件開發(fā)文檔編寫規(guī)范;技術(shù)三:統(tǒng)一建模語言UML;技術(shù)四:RationalRose工具與UML;技術(shù)五:開發(fā)環(huán)境;統(tǒng)一建模語言UML提綱實驗題目及要求技術(shù)一:Socket網(wǎng)絡(luò)編程;技術(shù)二:軟件開發(fā)文檔編寫規(guī)范;技術(shù)三:統(tǒng)一建模語言UML;技術(shù)四:RationalRose工具與UML;技術(shù)五:開發(fā)環(huán)境;RationalRose工具與UML提綱實驗題目及要求技術(shù)一:Socket網(wǎng)絡(luò)編程;技術(shù)二:軟件開發(fā)文檔編寫規(guī)范;技術(shù)三:統(tǒng)一建模語言UML;技術(shù)四:RationalRose工具與UML;技術(shù)五:開發(fā)環(huán)境;開發(fā)環(huán)境第一節(jié)活塞式空壓機的工作原理第二節(jié)活塞式空壓機的結(jié)構(gòu)和自動控制第三節(jié)活塞式空壓機的管理復(fù)習(xí)思考題單擊此處輸入你的副標(biāo)題,文字是您思想的提煉,為了最終演示發(fā)布的良好效果,請盡量言簡意賅的闡述觀點。第六章活塞式空氣壓縮機
piston-aircompressor壓縮空氣在船舶上的應(yīng)用:
1.主機的啟動、換向;
2.輔機的啟動;
3.為氣動裝置提供氣源;
4.為氣動工具提供氣源;
5.吹洗零部件和濾器。
排氣量:單位時間內(nèi)所排送的相當(dāng)?shù)谝患壩鼩鉅顟B(tài)的空氣體積。單位:m3/s、m3/min、m3/h第六章活塞式空氣壓縮機
piston-aircompressor空壓機分類:按排氣壓力分:低壓0.2~1.0MPa;中壓1~10MPa;高壓10~100MPa。按排氣量分:微型<1m3/min;小型1~10m3/min;中型10~100m3/min;大型>100m3/min。第六章活塞式空氣壓縮機
piston-aircompressor第一節(jié)活塞式空壓機的工作原理容積式壓縮機按結(jié)構(gòu)分為兩大類:往復(fù)式與旋轉(zhuǎn)式兩級活塞式壓縮機單級活塞壓縮機活塞式壓縮機膜片式壓縮機旋轉(zhuǎn)葉片式壓縮機最長的使用壽命-
----低轉(zhuǎn)速(1460RPM),動件少(軸承與滑片),潤滑油在機件間形成保護膜,防止磨損及泄漏,使空壓機能夠安靜有效運作;平時有按規(guī)定做例行保養(yǎng)的JAGUAR滑片式空壓機,至今使用十萬小時以上,依然完好如初,按十萬小時相當(dāng)于每日以十小時運作計算,可長達33年之久。因此,將滑片式空壓機比喻為一部終身機器實不為過?;?葉)片式空壓機可以365天連續(xù)運轉(zhuǎn)并保證60000小時以上安全運轉(zhuǎn)的空氣壓縮機1.進氣2.開始壓縮3.壓縮中4.排氣1.轉(zhuǎn)子及機殼間成為壓縮空間,當(dāng)轉(zhuǎn)子開始轉(zhuǎn)動時,空氣由機體進氣端進入。2.轉(zhuǎn)子轉(zhuǎn)動使被吸入的空氣轉(zhuǎn)至機殼與轉(zhuǎn)子間氣密范圍,同時停止進氣。3.轉(zhuǎn)子不斷轉(zhuǎn)動,氣密范圍變小,空氣被壓縮。4.被壓縮的空氣壓力升高達到額定的壓力后由排氣端排出進入油氣分離器內(nèi)。4.被壓縮的空氣壓力升高達到額定的壓力后由排氣端排出進入油氣分離器內(nèi)。1.進氣2.開始壓縮3.壓縮中4.排氣1.凸凹轉(zhuǎn)子及機殼間成為壓縮空間,當(dāng)轉(zhuǎn)子開始轉(zhuǎn)動時,空氣由機體進氣端進入。2.轉(zhuǎn)子轉(zhuǎn)動使被吸入的空氣轉(zhuǎn)至機殼與轉(zhuǎn)子間氣密范圍,同時停止進氣。3.轉(zhuǎn)子不斷轉(zhuǎn)動,氣密范圍變小,空氣被壓縮。螺桿式氣體壓縮機是世界上最先進、緊湊型、堅實、運行平穩(wěn),噪音低,是值得信賴的氣體壓縮機。螺桿式壓縮機氣路系統(tǒng):
A
進氣過濾器
B
空氣進氣閥
C
壓縮機主機
D
單向閥
E
空氣/油分離器
F
最小壓力閥
G
后冷卻器
H
帶自動疏水器的水分離器油路系統(tǒng):
J
油箱
K
恒溫旁通閥
L
油冷卻器
M
油過濾器
N
回油閥
O
斷油閥冷凍系統(tǒng):
P
冷凍壓縮機
Q
冷凝器
R
熱交換器
S
旁通系統(tǒng)
T
空氣出口過濾器螺桿式壓縮機渦旋式壓縮機
渦旋式壓縮機是20世紀90年代末期開發(fā)并問世的高科技壓縮機,由于結(jié)構(gòu)簡單、零件少、效率高、可靠性好,尤其是其低噪聲、長壽命等諸方面大大優(yōu)于其它型式的壓縮機,已經(jīng)得到壓縮機行業(yè)的關(guān)注和公認。被譽為“環(huán)保型壓縮機”。由于渦旋式壓縮機的獨特設(shè)計,使其成為當(dāng)今世界最節(jié)能壓縮機。渦旋式壓縮機主要運動件渦卷付,只有磨合沒有磨損,因而壽命更長,被譽為免維修壓縮機。
由于渦旋式壓縮機運行平穩(wěn)、振動小、工作環(huán)境安靜,又被譽為“超靜壓縮機”。
渦旋式壓縮機零部件少,只有四個運動部件,壓縮機工作腔由相運動渦卷付形成多個相互封閉的鐮形工作腔,當(dāng)動渦卷作平動運動時,使鐮形工作腔由大變小而達到壓縮和排出壓縮空氣的目的?;钊娇諝鈮嚎s機的外形第一節(jié)活塞式空壓機的工作原理一、理論工作循環(huán)(單級壓縮)工作循環(huán):4—1—2—34—1吸氣過程
1—2壓縮過程
2—3排氣過程第一節(jié)活塞式空壓機的工作原理一、理論工作循環(huán)(單級壓縮)
壓縮分類:絕熱壓縮:1—2耗功最大等溫壓縮:1—2''耗功最小多變壓縮:1—2'耗功居中功=P×V(PV圖上的面積)加強對氣缸的冷卻,省功、對氣缸潤滑有益。二、實際工作循環(huán)(單級壓縮)1.不存在假設(shè)條件2.與理論循環(huán)不同的原因:1)余隙容積Vc的影響Vc不利的影響—殘存的氣體在活塞回行時,發(fā)生膨脹,使實際吸氣行程(容積)減小。Vc有利的好處—
(1)形成氣墊,利于活塞回行;(2)避免“液擊”(空氣結(jié)露);(3)避免活塞、連桿熱膨脹,松動發(fā)生相撞。第一節(jié)活塞式空壓機的工作原理表征Vc的參數(shù)—相對容積C、容積系數(shù)λv合適的C:低壓0.07-0.12
中壓0.09-0.14
高壓0.11-0.16
λv=0.65—0.901)余隙容積Vc的影響C越大或壓力比越高,則λv越小。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025伸縮縫安裝工程勞務(wù)分包合同修改
- 9 知法守法依法維權(quán) 第二課時(說課稿)-2023-2024學(xué)年道德與法治六年級上冊統(tǒng)編版001
- 2023二年級數(shù)學(xué)上冊 六 表內(nèi)乘法和表內(nèi)除法(二)練習(xí)十四說課稿 蘇教版001
- 10《爬山虎的腳》第二課時 說課稿-2024-2025學(xué)年語文四年級上冊統(tǒng)編版
- Unit 3 My weekend plan Part 6(說課稿)-2024-2025學(xué)年人教PEP版英語六年級上冊
- 生了病怎么辦 (課件)-2024-2025學(xué)年人教版(2024)體育一年級全一冊
- Review Module Unit 1(說課稿)-2023-2024學(xué)年外研版(三起)英語四年級下冊
- 17《松鼠》說課稿-2024-2025學(xué)年五年級語文上冊統(tǒng)編版001
- 2025農(nóng)村宅基地轉(zhuǎn)讓合同模板
- 8網(wǎng)絡(luò)新世界 第一課時 說課稿-2023-2024學(xué)年道德與法治四年級上冊統(tǒng)編版
- 設(shè)立項目管理公司組建方案
- 薪酬戰(zhàn)略與實踐
- 答案之書(解答之書)-電子版精選答案
- 中國古代文學(xué)史 馬工程課件(上)01總緒論
- GB/T 22085.1-2008電子束及激光焊接接頭缺欠質(zhì)量分級指南第1部分:鋼
- 上海中心大廈-介紹 課件
- 《口腔修復(fù)學(xué)》種植義齒-課件
- 非酒精性脂肪性肝病防治指南解讀課件
- 地理微格教學(xué)課件
- 合成氨操作規(guī)程
- 清華大學(xué)抬頭信紙
評論
0/150
提交評論