版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
目錄1、目錄…………………12、題目……………23、設(shè)計(jì)任務(wù)…………………24、WinSocket簡介及特點(diǎn)原理…………………25、TCP簡介及特點(diǎn)原理………36、VisualC++簡介………………77、設(shè)計(jì)方案…………………88、系統(tǒng)的原理框圖和程序流程圖………109、實(shí)驗(yàn)中的問題…………………1410、實(shí)驗(yàn)結(jié)果及分析………………1411、課程設(shè)計(jì)的總結(jié)體會(huì)………1612、參考文獻(xiàn)……………………16利用Socket實(shí)現(xiàn)雙機(jī)通信一、設(shè)計(jì)任務(wù)1.利用WinSock來實(shí)現(xiàn)雙機(jī)通信,理解TCP狀態(tài)機(jī)圖。2.要求使用WinSock編程,采用其中的TCP面向連接方式,實(shí)現(xiàn)文本數(shù)據(jù)的交換。二、WinSocket簡介及特點(diǎn)原理2.1、什么是socket所謂socket通常也稱作"套接字",用于描述IP地址和端口,是一個(gè)通信鏈的句柄。應(yīng)用程序通常通過"套接字"向網(wǎng)絡(luò)發(fā)出請(qǐng)求或者應(yīng)答網(wǎng)絡(luò)請(qǐng)求。Socket接口是TCP/IP網(wǎng)絡(luò)的API,Socket接口定義了許多函數(shù)或例程,程序員可以用它們來開發(fā)TCP/IP網(wǎng)絡(luò)上的應(yīng)用程序。要學(xué)Internet上的TCP/IP網(wǎng)絡(luò)編程,必須理解Socket接口。Socket接口設(shè)計(jì)者最先是將接口放在Unix操作系統(tǒng)里面的。如果了解Unix系統(tǒng)的輸入和輸出的話,就很容易了解Socket了。網(wǎng)絡(luò)的Socket數(shù)據(jù)傳輸是一種特殊的I/O,Socket也是一種文件描述符。Socket也具有一個(gè)類似于打開文件的函數(shù)調(diào)用Socket(),該函數(shù)返回一個(gè)整型的Socket描述符,隨后的連接建立、數(shù)據(jù)傳輸?shù)炔僮鞫际峭ㄟ^該Socket實(shí)現(xiàn)的。常用的Socket類型有兩種:流式Socket(SOCK_STREAM)和數(shù)據(jù)報(bào)式Socket(SOCK_DGRAM)。流式是一種面向連接的Socket,針對(duì)于面向連接的TCP服務(wù)應(yīng)用;數(shù)據(jù)報(bào)式Socket是一種無連接的Socket,對(duì)應(yīng)于無連接的UDP服務(wù)應(yīng)用。最重要的是,socket是面向客戶/服務(wù)器模型而設(shè)計(jì)的,針對(duì)客戶和服務(wù)器程序提供不同的socket系統(tǒng)調(diào)用??蛻綦S機(jī)申請(qǐng)一個(gè)socket(相當(dāng)于一個(gè)想打電話的人可以在任何一臺(tái)入網(wǎng)電話上撥號(hào)呼叫),系統(tǒng)為之分配一個(gè)socket號(hào);服務(wù)器擁有全局公認(rèn)的socket,任何客戶都可以向它發(fā)出連接請(qǐng)求和信息請(qǐng)求(相當(dāng)于一個(gè)被呼叫的電話擁有一個(gè)呼叫方知道的電話號(hào)碼)。socket利用客戶/服務(wù)器模式巧妙地解決了進(jìn)程之間建立通信連接的問題。服務(wù)器socket半相關(guān)為全局所公認(rèn)非常重要。不妨考慮一下,兩個(gè)完全隨機(jī)的用戶進(jìn)程之間如何建立通信?假如通信雙方?jīng)]有任何一方的socket固定,就好比打電話的雙方彼此不知道對(duì)方的電話號(hào)碼,要通話是不可能的。2.2、WinSocket的通信原理WinSock是一個(gè)基于Socket模型的API。WinSock在Windows98,WindowNT中使用。WinSock一般由兩部分組成:開發(fā)組件和運(yùn)行組件。開發(fā)組件是供程序員在windows環(huán)境下開發(fā)網(wǎng)絡(luò)應(yīng)用程序使用的,它包括應(yīng)用程序接口庫函數(shù)、頭文件和實(shí)現(xiàn)的文檔,其中最主要的是WINSOCK.H運(yùn)行組件是以動(dòng)態(tài)鏈接庫(DlL)來實(shí)現(xiàn)socket接口的。文件名為WINSOCK.DLL應(yīng)用程序在執(zhí)行時(shí)裝入它就能實(shí)現(xiàn)網(wǎng)絡(luò)通信功能三、TCP簡介及特點(diǎn)原理1.什么是TCPTCP是一種面向連接(連接導(dǎo)向)的、可靠的、基于字節(jié)流的運(yùn)輸層(Transportlayer)通信協(xié)議。在簡化的計(jì)算機(jī)網(wǎng)絡(luò)OSI模型中,它完成第四層傳輸層所指定的功能。在因特網(wǎng)協(xié)議族(Internetprotocolsuite)中,TCP層是位于IP層之上,應(yīng)用層之下的中間層。不同主機(jī)的應(yīng)用層之間經(jīng)常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機(jī)制,而是提供不可靠的包交換。應(yīng)用層向TCP層發(fā)送用于網(wǎng)間傳輸?shù)?、?位字節(jié)表示的數(shù)據(jù)流,然后TCP把數(shù)據(jù)流分割成適當(dāng)長度的報(bào)文段(通常受該計(jì)算機(jī)連接的網(wǎng)絡(luò)的數(shù)據(jù)鏈路層的最大傳送單元(MTU)的限制)。之后TCP把結(jié)果包傳給IP層,由它來通過網(wǎng)絡(luò)將包傳送給接收端實(shí)體的TCP層。TCP為了保證不發(fā)生丟包,就給每個(gè)字節(jié)一個(gè)序號(hào),同時(shí)序號(hào)也保證了傳送到接收端實(shí)體的包的按序接收。然后接收端實(shí)體對(duì)已成功收到的字節(jié)發(fā)回一個(gè)相應(yīng)的確認(rèn)(ACK);如果發(fā)送端實(shí)體在合理的往返時(shí)延(RTT)內(nèi)未收到確認(rèn),那么對(duì)應(yīng)的數(shù)據(jù)(假設(shè)丟失了)將會(huì)被重傳。TCP用一個(gè)校驗(yàn)和函數(shù)來檢驗(yàn)數(shù)據(jù)是否有錯(cuò)誤;在發(fā)送和接收時(shí)都要計(jì)算校驗(yàn)和。首先,TCP建立連接之后,通信雙方都同時(shí)可以進(jìn)行數(shù)據(jù)的傳輸,其次,他是全雙工的;在保證可靠性上,采用超時(shí)重傳和捎帶確認(rèn)機(jī)制。在流量控制上,采用滑動(dòng)窗口協(xié)議,協(xié)議中規(guī)定,對(duì)于窗口內(nèi)未經(jīng)確認(rèn)的分組需要重傳。在擁塞控制上,采用慢啟動(dòng)算法。2.TCP功能提供計(jì)算機(jī)程序間連接、檢測和丟棄重復(fù)的分組、完成數(shù)據(jù)報(bào)的確認(rèn)、流量控制和網(wǎng)絡(luò)擁塞。3.TCP所提供服務(wù)的主要特點(diǎn)(1)面向連接的傳輸;(2)端到端的通信;(3)高可靠性,確保傳輸數(shù)據(jù)的正確性,不出現(xiàn)丟失或亂序;(4)全雙工方式傳輸;(5)采用字節(jié)流方式,即以字節(jié)為單位傳輸字節(jié)序列;(6)緊急數(shù)據(jù)傳送功能。4.TCP支持的服務(wù)器類型不管怎樣,TCP/IP是一個(gè)協(xié)議集。為應(yīng)用提供一些\"低級(jí)\"功能,這些包括IP、TCP、UDP。其它是執(zhí)行特定任務(wù)的應(yīng)用協(xié)議,如計(jì)算機(jī)間傳送文件、發(fā)送電子郵件、或找出誰注冊(cè)到另外一臺(tái)計(jì)算機(jī)。因此,最重要的\"商業(yè)\"TCP/IP服務(wù)有:文件傳送FileTransfer遠(yuǎn)程登錄Remotelogin計(jì)算機(jī)郵件Mail網(wǎng)絡(luò)文件系統(tǒng)(NFS)遠(yuǎn)程打印(Remoteprinting)遠(yuǎn)程執(zhí)行(Remoteexecution)名字服務(wù)器(Nameservers)終端服務(wù)器(Terminalservers)5.TCP的端口號(hào)TCP段結(jié)構(gòu)中端口地址都是16比特,可以有在0~65535范圍內(nèi)的端口號(hào)。對(duì)于這65536個(gè)端口號(hào)有以下的使用規(guī)定:(1)端口號(hào)小于256的定義為常用端口,服務(wù)器一般都是通過常用端口號(hào)來識(shí)別的。任何TCP/IP實(shí)現(xiàn)所提供的服務(wù)都用1~1023之間的端口號(hào),是由IANA來管理的;(2)客戶端只需保證該端口號(hào)在本機(jī)上是惟一的就可以了。客戶端口號(hào)因存在時(shí)間很短暫又稱臨時(shí)端口號(hào);(3)大多數(shù)TCP/IP實(shí)現(xiàn)給臨時(shí)端口號(hào)分配1024~5000之間的端口號(hào)。大于5000的端口號(hào)是為其他服務(wù)器預(yù)留的。6.TCP協(xié)議是如何確保數(shù)據(jù)傳輸高可靠性
為了保證可靠性,發(fā)送的報(bào)文都有遞增的序列號(hào)。序列號(hào)和確認(rèn)號(hào)用來確保傳輸?shù)目煽啃?。此外,?duì)每個(gè)報(bào)文都設(shè)立一個(gè)定時(shí)器,設(shè)定一個(gè)最大時(shí)延。對(duì)那些超過最大時(shí)延仍沒有收到確認(rèn)信息的報(bào)文就認(rèn)為已經(jīng)丟失,需要重傳。7.TCP的服務(wù)流程TCP協(xié)議提供的是可靠的、面向連接的傳輸控制協(xié)議,即在傳輸數(shù)據(jù)前要先建立邏輯連接,然后再傳輸數(shù)據(jù),最后釋放連接3個(gè)過程。TCP提供端到端、全雙工通信;采用字節(jié)流方式,如果字節(jié)流太長,將其分段;提供緊急數(shù)據(jù)傳送功能。盡管TCP和UDP都使用相同的網(wǎng)絡(luò)層(IP),TCP卻向應(yīng)用層提供與UDP完全不同的服務(wù)。TCP提供一種面向連接的、可靠的字節(jié)流服務(wù)。面向連接意味著兩個(gè)使用TCP的應(yīng)用(通常是一個(gè)客戶和一個(gè)服務(wù)器)在彼此交換數(shù)據(jù)之前必須先建立一個(gè)TCP連接。這一過程與打電話很相似,先撥號(hào)振鈴,等待對(duì)方摘機(jī)說“喂”,然后才說明是誰。在一個(gè)TCP連接中,僅有兩方進(jìn)行彼此通信。廣播和多播不能用于TCP。TCP通過下列方式來提供可靠性:?應(yīng)用數(shù)據(jù)被分割成TCP認(rèn)為最適合發(fā)送的數(shù)據(jù)塊。這和UDP完全不同,應(yīng)用程序產(chǎn)生的數(shù)據(jù)報(bào)長度將保持不變。由TCP傳遞給IP的信息單位稱為報(bào)文段或段(segment)TCP如何確定報(bào)文段的長度。?當(dāng)TCP發(fā)出一個(gè)段后,它啟動(dòng)一個(gè)定時(shí)器,等待目的端確認(rèn)收到這個(gè)報(bào)文段。如果不能及時(shí)收到一個(gè)確認(rèn),將重發(fā)這個(gè)報(bào)文段。?當(dāng)TCP收到發(fā)自TCP連接另一端的數(shù)據(jù),它將發(fā)送一個(gè)確認(rèn)。這個(gè)確認(rèn)不是立即發(fā)送,通常將推遲幾分之一秒?TCP將保持它首部和數(shù)據(jù)的檢驗(yàn)和。這是一個(gè)端到端的檢驗(yàn)和,目的是檢測數(shù)據(jù)在傳輸過程中的任何變化。如果收到段的檢驗(yàn)和有差錯(cuò),TCP將丟棄這個(gè)報(bào)文段和不確認(rèn)收到此報(bào)文段(希望發(fā)端超時(shí)并重發(fā))。?既然TCP報(bào)文段作為IP數(shù)據(jù)報(bào)來傳輸,而IP數(shù)據(jù)報(bào)的到達(dá)可能會(huì)失序,因此TCP報(bào)文段的到達(dá)也可能會(huì)失序。如果必要,TCP將對(duì)收到的數(shù)據(jù)進(jìn)行重新排序,將收到的數(shù)據(jù)以正確的順序交給應(yīng)用層。?既然IP數(shù)據(jù)報(bào)會(huì)發(fā)生重復(fù),TCP的接收端必須丟棄重復(fù)的數(shù)據(jù)。?TCP還能提供流量控制。TCP連接的每一方都有固定大小的緩沖空間。TCP的接收端只允許另一端發(fā)送接收端緩沖區(qū)所能接納的數(shù)據(jù)。這將防止較快主機(jī)致使較慢主機(jī)的緩沖區(qū)溢出。兩個(gè)應(yīng)用程序通過TCP連接交換8bit字節(jié)構(gòu)成的字節(jié)流。TCP不在字節(jié)流中插入記錄標(biāo)識(shí)符。我們將這稱為字節(jié)流服務(wù)(bytestreamservice)。如果一方的應(yīng)用程序先傳10字節(jié),又傳20字節(jié),再傳50字節(jié),連接的另一方將無法了解發(fā)方每次發(fā)送了多少字節(jié)。收方可以分4次接收這80個(gè)字節(jié),每次接收20字節(jié)。一端將字節(jié)流放到TCP連接上,同樣的字節(jié)流將出現(xiàn)在TCP連接的另一端。另外,TCP對(duì)字節(jié)流的內(nèi)容不作任何解釋。TCP不知道傳輸?shù)臄?shù)據(jù)字節(jié)流是二進(jìn)制數(shù)據(jù),還是ASCII字符、EBCDIC字符或者其他類型數(shù)據(jù)。對(duì)字節(jié)流的解釋由TCP連接雙方的應(yīng)用層解釋。這種對(duì)字節(jié)流的處理方式與Unix操作系統(tǒng)對(duì)文件的處理方式很相似。Unix的內(nèi)核對(duì)一個(gè)應(yīng)用讀或?qū)懙膬?nèi)容不作任何解釋,而是交給應(yīng)用程序處理。對(duì)Unix的內(nèi)核來說,它無法區(qū)分一個(gè)二進(jìn)制文件與一個(gè)文本文件。TCP是因特網(wǎng)中的傳輸層協(xié)議,使用三次握手協(xié)議建立連接。當(dāng)主動(dòng)方發(fā)出SYN連接請(qǐng)求后,等待對(duì)方回答SYN,ACK。這種建立連接的方法可以防止產(chǎn)生錯(cuò)誤的連接,TCP使用的流量控制協(xié)議是可變大小的滑動(dòng)窗口協(xié)議。第一次握手:建立連接時(shí),客戶端發(fā)送SYN包(SEQ=x)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn)。第二次握手:服務(wù)器收到SYN包,必須確認(rèn)客戶的SYN(ACK=x+1),同時(shí)自己也送一個(gè)SYN包(SEQ=y),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài)。第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ACK=y+1),此包發(fā)送完畢,客戶端和服務(wù)器時(shí)入Established狀態(tài),完成三次握手。四、VisualC++簡介VisualC++是一個(gè)功能強(qiáng)大的可視化軟件開發(fā)工具。自1993年Microsoft公司推出VisualC++1.0后,隨著其新版本的不斷問世,VisualC++已成為專業(yè)程序員進(jìn)行軟件開發(fā)的首選工具。雖然微軟公司推出了VisualC++.NET(VisualC++7.0),但它的應(yīng)用的很大的局限性,只適用于Windows2000,WindowsXP和WindowsNT4.0。所以實(shí)際中,更多的是以VisualC++6.0為平臺(tái)。VisualC++它大概可以分成三個(gè)主要的部分:1、DeveloperStudio,這是一個(gè)集成開發(fā)環(huán)境,我們?nèi)粘9ぷ鞯?9%都是在它上面完成的,再加上它的標(biāo)題赫然寫著“MicrosoftVisualC++”,所以很多人理所當(dāng)然的認(rèn)為,那就是VisualC++了。其實(shí)不然,雖然DeveloperStudio提供了一個(gè)很好的編輯器和很多Wizard,但實(shí)際上它沒有任何編譯和鏈接程序的功能,真正完成這些工作的幕后英雄后面會(huì)介紹。我們也知道,DeveloperStudio并不是專門用于VC的,它也同樣用于VB,VJ,VID等VisualStudio家族的其他同胞兄弟。所以不要把DeveloperStudio當(dāng)成VisualC++,它充其量只是VisualC++的一個(gè)殼子而已。2、MFC。從理論上來講,MFC也不是專用于VisualC++,BorlandC++,C++Builder和SymantecC++同樣可以處理MFC。同時(shí),用VisualC++編寫代碼也并不意味著一定要用MFC,只要愿意,用VisualC++來編寫SDK程序,或者使用STL,ATL,一樣沒有限制。不過,VisualC++本來就是為MFC打造的,VisualC++中的許多特征和語言擴(kuò)展也是為MFC而設(shè)計(jì)的,所以用VisualC++而不用MFC就等于拋棄了VisualC++中很大的一部分功能。但是,VisualC++也不等于MFC。3、PlatformSDK。這才是VisualC++和整個(gè)VisualStudio的精華和靈魂,雖然我們很少能直接接觸到它。大致說來,PlatformSDK是以MicrosoftC/C++編譯器為核心(不是VisualC++,看清楚了),配合MASM,輔以其他一些工具和文檔資料。上面說到DeveloperStudio沒有編譯程序的功能,那么這項(xiàng)工作是由誰來完成的呢?是CL,是NMAKE,和其他許許多多命令行程序,這些我們看不到的程序才是構(gòu)成VisualStudio的基石。五、設(shè)計(jì)方案5.1WinSocket通信的步驟:1.在服務(wù)器端的應(yīng)用程序中的網(wǎng)絡(luò)通信的步驟如下:(1)建立服務(wù)器端的Socket,開始偵聽整個(gè)網(wǎng)絡(luò)中的連接請(qǐng)求。(2)當(dāng)檢測到來自客戶端的連接請(qǐng)求時(shí),向客戶端發(fā)送收到連接請(qǐng)求的信息,并建立與客戶端之間的連接,再繼續(xù)進(jìn)入監(jiān)聽狀態(tài)。(3)在監(jiān)聽的過程中,如果有用戶發(fā)出了請(qǐng)求,則服務(wù)器會(huì)產(chǎn)生一個(gè)新的連接Socket來處理用戶的請(qǐng)求,而原來的Socket仍然會(huì)進(jìn)行監(jiān)聽操作。(4)當(dāng)完成通信后,服務(wù)器關(guān)閉與客戶端的Socket連接。2.在客戶端應(yīng)用程序中的網(wǎng)絡(luò)通信的步驟如下:(1)建立一個(gè)客戶端的Socket。(2)從命令行中得到服務(wù)器的名字,并進(jìn)行查詢以得到服務(wù)器的IP地址;(3)從命令行中得到服務(wù)器所提供的端口號(hào),以便進(jìn)行下一步的操作;(4)發(fā)送連接請(qǐng)求到服務(wù)器,并等待服務(wù)器的回饋信息。(5)連接成功后,與服務(wù)器進(jìn)行數(shù)據(jù)的交互。(6)數(shù)據(jù)處理完畢后,關(guān)閉自身的Socket連接,釋放進(jìn)行連接所分配的資源,客戶端的程序運(yùn)行完畢。5.2、程序中用到的過程函數(shù)介紹如下:1、Socket過程Socket過程創(chuàng)建一個(gè)套接字并返回一個(gè)整型描述符:Descriptor=socket(protofamilytypeprotocol)其中:protofamily:AF-INET表示TCP/IP協(xié)議系列type:SOCK_STREAM表示面向連接的流傳輸SOCK_DGRAM表示無連接的面向消息傳輸Protocol:一般情況下為02、Bind過程在套接字被創(chuàng)建之后,服務(wù)器使用Bind過程提供一個(gè)傳輸層地址,服務(wù)器將通過它等待通信。Bind(socketlocaladdraddrlen)其中:socket是一個(gè)套接字的描述符localaddr是將要賦予套接字的本地地址,是sockaddr結(jié)構(gòu)。Addrlen是本地地址的長度3、Listen過程服務(wù)器調(diào)用Listen過程將套接字設(shè)為被動(dòng)模式以使它能被用來等待客戶的通信。Listen(socketqueuesize)其中:socket是一個(gè)套接字的描述符queuesize表示該套接字的請(qǐng)求隊(duì)列的長度,請(qǐng)求隊(duì)列的存在允許系統(tǒng)在服務(wù)器正在處理上一個(gè)請(qǐng)求時(shí)保存到達(dá)的其它請(qǐng)求。4、Connect過程客戶使用Connect過程與指定服務(wù)器建立連接。Connect(socketsaddresssaddresslen)其中:socket是客戶端計(jì)算機(jī)上用于該連接的套接字的描述符saddress是服務(wù)器地址與協(xié)議端口號(hào),是sockaddr結(jié)構(gòu)saddresslen是saddress的長度5、Accept過程服務(wù)器調(diào)用Accept過程來接受客戶的一個(gè)連接請(qǐng)求newsock=accept(socketcaddresscaddresslen)其中:socket是服務(wù)器已經(jīng)創(chuàng)建并聯(lián)編于指定協(xié)議端口的套接字的描述符caddress用于存放客戶端的地址,是sockaddr結(jié)構(gòu)caddresslen是一個(gè)指向整型的指針,用于存放caddress的長度6、Send過程如果套接字已連接,send過程可用來傳輸數(shù)據(jù)。Send(socketdatalengthflags)其中:socket是使用的服務(wù)器/客戶套接字的描述符data是待發(fā)送數(shù)據(jù)在內(nèi)存中的地址length表示數(shù)據(jù)的字節(jié)數(shù)flags包含了請(qǐng)求特殊選項(xiàng)的位,做系統(tǒng)調(diào)試用。7、Recv過程一個(gè)應(yīng)用可以條用recv從一個(gè)連接的套接字接收數(shù)據(jù)。Recv(socketbufferlengthflags)其中:socket是從中接收數(shù)據(jù)的服務(wù)器/客戶套接字的描述符buffer表示內(nèi)存中用來存放接收數(shù)據(jù)的地址length表示緩沖區(qū)的大小flags包含了請(qǐng)求特殊選項(xiàng)的位,做系統(tǒng)調(diào)試用。8、Close過程Close過程告訴系統(tǒng)終止對(duì)一個(gè)套接字的使用。Close(socket)其中:socket是要關(guān)閉的套接字的描述符在Winsock中,用closesocket(socket)來關(guān)閉套接字。六、系統(tǒng)的原理框圖和程序流程圖exit(-1);ClientProc();return0;1InputType()<0程序流程圖:exit(-1);ClientProc();return0;1InputType()<0strType=="s"WSAStartup(MAKEWORD(2,0),&wsadata)!=0cout<<"tcpclient...\n";cout<<"WSAStartuperro\n";cout<<"svrorcli(s/c):";strType=="s"return0;return-1;return1;WSAStartup(MAKEWORD(2,0),&wsadata)!=0cout<<"tcpServer...\n";cout<<"WSAStartuperro\n";strType=="s"WSAStartup(MAKEWORD(2,0),&wsadata)!=0cout<<"tcpclient...\n";cout<<"WSAStartuperro\n";cout<<"svrorcli(s/c):";strType=="s"return0;return-1;return1;WSAStartup(MAKEWORD(2,0),&wsadata)!=0cout<<"tcpServer...\n";cout<<"WSAStartuperro\n";WSACleanup();MultiIFWSACleanup();bind(sock,(structsockaddr*)&addr,sizeof(addr))==SOCKET_ERROR(sock=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKETstructsockaddr_inaddr,accAddr;WSACleanup();MultiIFWSACleanup();bind(sock,(structsockaddr*)&addr,sizeof(addr))==SOCKET_ERROR(sock=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKETstructsockaddr_inaddr,accAddr;structsockaddr_inaddr;(sock=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKETconnect(sock,(structsockaddr*)&addr,sizeof(structsockaddr))==SOCKET_ERRORWSACleanup();char*connectedAddr=inet_ntoa(*((in_addr*)&(addr.sin_addr)));WHILEWSACleanup();structsockaddr_inaddr;(sock=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKETconnect(sock,(structsockaddr*)&addr,sizeof(structsockaddr))==SOCKET_ERRORWSACleanup();char*connectedAddr=inet_ntoa(*((in_addr*)&(addr.sin_addr)));WHILEWSACleanup();七、實(shí)驗(yàn)中的問題1、在建立Socket連接時(shí),兩端的端口號(hào)必須設(shè)為一致,否則無法建立連接。2、建立好連接之后,必須按照給定的格式輸入通信信息,即m+輸入的信息內(nèi)容,否則,將會(huì)出現(xiàn)“nothiscommand”的提示。3、如果一個(gè)使用某端口的程序沒有關(guān)閉,另一個(gè)程序就不能使用這個(gè)端口。4、必須先連接服務(wù)器端,再連接客戶端,否則,不能預(yù)期將服務(wù)器端和客戶端連通。八、實(shí)驗(yàn)結(jié)果及分析程序運(yùn)行后,會(huì)出現(xiàn)一個(gè)doc窗口,輸入“s”,并單擊回車,輸出“tcpserver…,connectedby”,此時(shí),服務(wù)器連通。服務(wù)器端運(yùn)行界面如圖2所示:圖2服務(wù)器端界面再重新運(yùn)行這個(gè)程序,在新的doc窗口中,輸入“c”,并單擊回車,輸出“tcpclient…,connectedto”,此時(shí)客戶端連通。按規(guī)定的輸入格式(m+輸入的信息)在客戶端輸入信息,在服務(wù)器端窗口內(nèi)顯示出客戶端輸入的信息??蛻舳诉\(yùn)行界面如圖3所示:圖3客戶端運(yùn)行界面九、課程設(shè)計(jì)的總結(jié)體會(huì)課程設(shè)計(jì)終于完成了。在這段不長的時(shí)間里,我感觸很深,也學(xué)到很多東西。我對(duì)winsock雙機(jī)通信有了更深的了解和認(rèn)識(shí),其原理和功能也加深了理解。TCP協(xié)議我們以前也學(xué)過相關(guān)知識(shí),經(jīng)過這次設(shè)計(jì),相關(guān)的知識(shí)得到進(jìn)一步鞏固,運(yùn)用也變得更加熟練。我學(xué)習(xí)和了解了有關(guān)visualC++中的相關(guān)知識(shí)和應(yīng)用,對(duì)MicrosoftVisualC++6.0集成開發(fā)環(huán)境也更加熟悉。通過這次課程設(shè)計(jì),我不僅學(xué)習(xí)到了新的知識(shí),也對(duì)以前學(xué)過的相關(guān)的知識(shí)有了更深入的理解和掌握。不僅加強(qiáng)了我的理論知識(shí)的學(xué)習(xí),也增強(qiáng)了我的動(dòng)手能力,對(duì)知識(shí)的理解不再局限于表明,理解更加透徹,也更鞏固。以前的學(xué)習(xí)都是單一方面的知識(shí),這次通過課程設(shè)計(jì),將這三個(gè)方面的知識(shí)綜合起來,顯然難度是加大了。開始的時(shí)候我也感覺似乎無從下手。但在網(wǎng)上查找了相關(guān)資料,并且請(qǐng)教了一些同學(xué)后,有了一些頭緒,并著手開始設(shè)計(jì)和實(shí)踐。經(jīng)過十幾天的努力,任務(wù)終于圓滿完成。我這次課程設(shè)計(jì)中,我得到了不少同學(xué)的指點(diǎn)和幫助,他們不厭其煩地給我講解甚至是很簡單的問題,也在我迷茫和困惑的時(shí)候,給我一兩句話,讓我幡然頓悟。我這次任務(wù)的完成也有你們的辛苦和功勞,無法在此一一道明,只有一并表示感謝。謝謝你們!十、參考文獻(xiàn)1.WINSOCK網(wǎng)絡(luò)編程實(shí)用教程李凌清華大學(xué)出版社20032.WINDOWS網(wǎng)絡(luò)編程之VB篇蕭秋水文娟清華大學(xué)出版社20013.WINDOWS網(wǎng)絡(luò)編程技術(shù)AnthonyJones機(jī)械工業(yè)出版社2000洛陽理工學(xué)院畢業(yè)設(shè)計(jì)(論文)開題報(bào)告系(部):機(jī)械工程系年月日(學(xué)生填表)課題名稱立臥三面組機(jī)專用夾具設(shè)計(jì)學(xué)生姓名專業(yè)班級(jí)課題類型應(yīng)用型指導(dǎo)老師職稱高工課題來源生產(chǎn)綜述本課題國內(nèi)外研究動(dòng)態(tài),說明選題的依據(jù)和意義夾具是機(jī)電產(chǎn)品制造中必不可缺的四大工具(刀具、夾具、量具、模具)之一。夾具在國內(nèi)外也正在逐漸形成一個(gè)依附于機(jī)床業(yè)或獨(dú)立的小行業(yè)。我國國內(nèi)的夾具始于20世紀(jì)60年代,當(dāng)時(shí)建立了面向機(jī)械行業(yè)的天津組合夾具廠,和面向航空工業(yè)的保定向陽機(jī)械廠,以后又建立了數(shù)個(gè)生產(chǎn)組合夾具元件的工廠。從國際上看俄國、德國和美國是組合夾具的主要生產(chǎn)國。當(dāng)前國際上的夾具企業(yè)均為中小企業(yè),專用夾具、可調(diào)整夾具主要接受本地區(qū)和國內(nèi)訂貨,而通用性強(qiáng)的組合夾具已逐步成熟為國際貿(mào)易中的一個(gè)品種。研究協(xié)會(huì)的統(tǒng)計(jì)表明,目前中、小批多品種生產(chǎn)的工件品種已占工件種類總數(shù)的85%左右?,F(xiàn)代生產(chǎn)要求企業(yè)所制造的產(chǎn)品品種經(jīng)常更新?lián)Q代,以適應(yīng)市場的需求與競爭。然而,一般企業(yè)都仍習(xí)慣于大量采用傳統(tǒng)的專用夾具,一般在具有中等生產(chǎn)能力的工廠,里約擁有數(shù)千甚至近萬套專用夾具;另一方面,在多品種生產(chǎn)的企業(yè)中,每隔幾年年就要更新一半以上的專用夾具,而夾具的實(shí)際磨損量僅為10~20%左右。特別是近年來,數(shù)控機(jī)床、加工中心、成組技術(shù)、柔性制造系統(tǒng)、(FMS)等新加工技術(shù)的應(yīng)用,對(duì)機(jī)床夾具提出了更新的要求。本設(shè)計(jì)是角支架零件的孔加工的立臥三面組機(jī)專用夾具設(shè)計(jì),它的主要加工面是三面共六孔的鏜削加工。從零件的結(jié)構(gòu)外型分析,它的外型復(fù)雜,且不易加工,因此該零件材料為鑄造件。該鑄件為機(jī)床的箱體類零件,屬批量生產(chǎn),而所要加工的是該零件上的六個(gè)光孔,為了滿足加工精度的要求,滿足零件的形位公差要求,在設(shè)計(jì)夾具的時(shí)候必須保證該夾具能夠?qū)ぜM(jìn)行嚴(yán)格的定位,確定定位方案,確保不出現(xiàn)過定位、欠定位等現(xiàn)象。綜合所給零件的形狀特點(diǎn),可以初步確定所設(shè)計(jì)專用夾具的大體結(jié)構(gòu)。然后再根據(jù)工件的具體外形尺寸,通過查閱夾具設(shè)計(jì)方面的相關(guān)書籍、手冊(cè)等資料詳細(xì)確定夾具各個(gè)部分的尺寸。夾具是制造系統(tǒng)的重要組成部分,不論是傳統(tǒng)制造,還是現(xiàn)代制造系統(tǒng),夾具都顯現(xiàn)出了在機(jī)械加工中的重要地位。因此,好的夾具設(shè)計(jì)可以提高產(chǎn)品勞動(dòng)生產(chǎn)率,保證和提高加工精度,降低生產(chǎn)成本等,還可以擴(kuò)大機(jī)床的使用范圍,從而使產(chǎn)品在保證精度的前提下提高效率、降低成本。當(dāng)今激烈的市場競爭和企業(yè)信息化的要求,企業(yè)對(duì)夾具的設(shè)計(jì)及制造同樣也提出了更高的要求。夾具的好壞直接關(guān)系著工件的加工質(zhì)量以及生產(chǎn)效率等,為了更好的服務(wù)制造業(yè)的發(fā)展,我們有必要對(duì)夾具進(jìn)行設(shè)計(jì)和研究。研究的基本內(nèi)容,擬解決的主要問題1)、分析畢業(yè)設(shè)計(jì)課題參數(shù)、明確課題
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度環(huán)境監(jiān)測系統(tǒng)采購與安裝合同
- 2024年建筑工程混凝土材料供應(yīng)合同
- 2024年度廣告媒體采購服務(wù)合同
- 農(nóng)業(yè)干旱課件教學(xué)課件
- 2024年度智能交通系統(tǒng)集成合同
- 2024屋頂停車設(shè)施設(shè)計(jì)與施工合同
- 2024電視媒體廣告合同
- 2024年度自然人汽車租賃合同
- 2024年建筑工程施工質(zhì)量檢測協(xié)議
- 2024年度大型設(shè)備搬遷安全合同
- 《我是班級(jí)的主人翁》的主題班會(huì)
- 酒店安全設(shè)施及安全制度
- 近代化的早期探索與民族危機(jī)的加劇 單元作業(yè)設(shè)計(jì)
- 租賃機(jī)械設(shè)備施工方案
- 屋面融雪系統(tǒng)施工方案
- 二年級(jí)家長會(huì)語文老師課件
- 結(jié)構(gòu)加固改造之整體結(jié)構(gòu)加固教學(xué)課件
- 教堂安全風(fēng)險(xiǎn)分級(jí)管控體系方案全套資料(2019-2020新標(biāo)準(zhǔn)完整版)
- 歷史(心得)之在歷史教學(xué)中培養(yǎng)學(xué)生生態(tài)環(huán)境意識(shí)
- 有機(jī)磷農(nóng)藥中毒課件-整理
- 輪對(duì)故障發(fā)生的原因和危害分析及其防范措施
評(píng)論
0/150
提交評(píng)論