版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、淮陰工學院Linux操作系統(tǒng)及嵌入式應(yīng)用實驗報告系(院):計算機工程學院專業(yè):計算機科學與技術(shù)(物聯(lián)網(wǎng)工程)班級:物聯(lián)網(wǎng)1111姓名:蔣振學號:1111307116指導教師:孫成富學年學期:20142015學年第1學期實驗1Socket全雙工通信實驗1實驗目的1)了解網(wǎng)絡(luò)套接字編程2)掌握網(wǎng)絡(luò)通信服務(wù)器和客戶端的工作過程3)利用多線程實現(xiàn)全雙工通信4)下載并運行網(wǎng)絡(luò)應(yīng)用程序2實驗環(huán)境1) 宿主機:Fedora102)嵌入式Linux軟硬件系統(tǒng):TQ2440(基于S3C2440A)開發(fā)板3實驗準備1.1 Linux下的多線程編程進程是程序執(zhí)行時的一個實例,即它是程序已經(jīng)執(zhí)行到何種程度的數(shù)據(jù)結(jié)構(gòu)的
2、匯集。從內(nèi)核的觀點看,進程的目的就是擔當分配系統(tǒng)資源(CPU時間、內(nèi)存等)的基本單位。線程是進程的一個執(zhí)行流,是CPU調(diào)度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。一個進程由幾個線程組成(擁有很多相對獨立的執(zhí)行流的用戶程序共享應(yīng)用程序的大部分數(shù)據(jù)結(jié)構(gòu)),線程與同屬一個進程的其他的線程共享進程所擁有的全部資源。本實驗使用多線程解決了并行通信的難題。關(guān)于多線程的函數(shù)主要是使用pthread.h頭文件中定義的多線程操作函數(shù),如pthread_createpthread_cancel等。1.2 TCP/IP概述1.2.1 TCP/IP的分層模型OSI協(xié)議參考模型,是基于國際標準化組織(I
3、SO)的建議發(fā)展起來的,它分為7個層次:應(yīng)用層、表示層、會話層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層及物理層。這個7層的協(xié)議模型雖然規(guī)定得非常細致和完善,但在實際中卻得不到廣泛的應(yīng)用,具重要的原因之一就在于它過于復雜。但它仍是此后很多協(xié)議模型的基礎(chǔ)。與此相區(qū)別的TCP/IP協(xié)議模型將OSI的7層協(xié)議模型簡化為4層,從而更有利于實現(xiàn)和使用。TCP/IP的協(xié)議參考模型和OSI協(xié)議參考模型的對應(yīng)關(guān)系如下圖1所示:圖1TCP/IP協(xié)議與OSI協(xié)議參考模型對比圖3.2.2TCP的三次握手TCP是面向連接的,所謂面向連接,就是當計算機雙方通信時必需先建立連接,然后進行數(shù)據(jù)通信,最后拆除連接三個過程。TCP在建立連接
4、時又分三步走:第一步(A->B):主機A向主機B發(fā)送一個包含SYN即同步(Synchronize)標志的TCP報文,SYN同步報文會指明客戶端使用的端口以及TCP連接的初始序號;第二步(B->A):主機B在收到客戶端的SYN報文后,將返回一個SYN+ACK的報文,表示主機B的請求被接受,同時TCP序號被加一,ACK即確認(Acknowledgment:)。第三步(A->B):主機A也返回一個確認報文ACK給服務(wù)器端,同樣TCP序列號被加一,到此一個TCP連接完成。1.3 套接字(socket概述1.3.1 套接字類型1)流式套接字(SOCK_STREAM)流式套接字提供可靠的
5、、面向連接的通信流;它使用TCP協(xié)議,從而保證了數(shù)據(jù)傳輸?shù)目煽啃院晚樞蛐浴?)數(shù)據(jù)報套接字(SOCK_DGRAM)數(shù)據(jù)報套接字定義了一種無可靠、面向無連接的服務(wù),數(shù)據(jù)通過相互獨立的報文進行傳輸,是無序的,并且不保證是可靠、無差錯的。它使用數(shù)據(jù)報協(xié)議UDP3)原始套接字(SOCK_RAW)原始套接字允許對底層協(xié)議如IP或ICMP進行直接訪問,它功能強大但使用較為不便,主要用于一些協(xié)議的開發(fā)。1.3.2 套接字編程使用TCP時Socket編程流程圖如圖2所示。服務(wù)器端客戶端圖2TCP時Socket編程流程圖使用UDP時Socket編程如圖3所示。圖3TCP時Socket編程流程圖4實驗過程4.1
6、簡單的Socket通信程序設(shè)計在Fedora10操作系統(tǒng)的/home目錄下創(chuàng)建NetCommunicator目錄,并新建client.c和server.c源文件,NetCommunicator目錄如圖4所示。圖4NetCommunicator截圖分別編寫Socket通信的客戶端和服務(wù)器端源代碼。編寫完畢,使用gcc編譯上述client.c和server.c源文件生成client和server可執(zhí)行程序(x86平臺),編譯過程如圖5所示。使用arm-linux-gcc編譯上述client.c和server.c源文件生成a_client和a_server可執(zhí)行程序(ARM平臺)。編譯過程如圖6所示
7、.rootjames-fedora:/mnt/hgfs/Linux/hletCommunrcator文件(E)編輯(E)查看(史至端(工)標簽(工)幫助出)口口上坦:日照名寫-于巳日口廠占NetConimunicatorl#gcc-clientclient.cNetConimunicatorl#gcc-oserverserver.c自NetCommunistor#口圖5編譯x86Socket通信程序過程截圖rootjames-fedora:/mnt/hgfs/L!nux/NetCommunicator文件(F)編楫(日查看N)終端標簽(工)幫助rootames-fedoraNetCommuni
8、cator#Isclientclient.cserverserver.c(rootjames-fedorarootjames-fedorarootjames-fedoraaclientaserveramps-fedoraNetCommunicator#arm-linux-gcc-oaclientclient.cNettommuriicatorj#arm-linux-gcc-oaserverserver.cNetCommunicator#Isclientclient.cserverserver.cNetCommunicator#圖6編譯ARM平臺的可執(zhí)行程序PC機測試,測試結(jié)果如下圖所示:kro
9、otjames-fedorai/rnnt/hgfs/Lmux/NetCommunrc文件(E)編輯匡)查看國)挑端(工)標量(工)招助(H)rootjames-fedcraLinux#cdNetCommunicator/(root(3james-fedoraNetCommunicator#Isclientclient.cserverserver.croot(ajaniEs-fEdoraNetCommunicator#./server=waitingforclient'srequest=圖7執(zhí)行服務(wù)器端程序rooames-Fedloraz/mnt/hgfs/Linux/NetCommun
10、icator攵:件(E阪鬼(E)查看(旦)蟀端(工)標瞥(工)幫助(H)Irootjante&-fedora-#cd/mnt/hgfs/Linux/NetC&mrnunicator/rootjames-fedoraNetComnuinicator#Isclientdient.s&rverserver,crootjames-fedoraNetCommunicator#./clientusage:./client<ipaddre5s>root$Julies*fedoraNetCDfriinunicator#./clientwendm的toser
11、ver:HellohJamesJiang!Received:HEllDhyouareconnected!rootOjanes-fedoraNEtCpnmunicator#口圖8執(zhí)行客戶端程序回rootjames-fedora:/mnt/hgfs/Lrnux/NetCommunic文件(日編輯(E)查看(Y)終端(工)標簽(工)幫助出)rootfajames-fedoraLinux#cdNetCommjnicator/rootjames-fedoraNetCommunicator#Isclientclient.cserverserver.croottajames-fedoraNetCommuni
12、cator#./server=waitirigforclienthsrequest=recvmsgfromclient:HellopJamesJiang!t圖9服務(wù)器端接收到客戶端發(fā)來的消息截圖使用gcc-linux-gcc生成ARM平臺下的可執(zhí)行程序a_client和a_serveg編譯結(jié)果如圖10所示。rootjames-fedora:/mnt/hgfs/Linux/NetComrnunicator文件讓)僦t位)查看N)終端標簽田幫助出)rootjames-fedoraNetCommunicator#Isclientclient.cserverserver.cOQtjamesfedora
13、rootjanies-fedoraroot®antes-fedoraaclientaserverr°Qtjanips-fedoraNetComffluriicator#arm-linux-gcc0aclientclient.cNetCommunicator#ann-linuxgcc-oaserverserver.cNetCcmmunicator#Isclientclient,cserverserver.cMHtConwnuniBtQ井圖10編譯ARM平臺可執(zhí)行程序4.2 全雙工Socket通信程序設(shè)計為了實現(xiàn)全雙工通信,服務(wù)端進程和客戶端進程均使用了兩個線程,一個負責收,另
14、一個負責發(fā)。在NetCommunicator目錄,并新建clientV2.c和serverV2.c源文件,如圖11所示,編寫完畢,編譯通過生成clientV2和serverV2可執(zhí)行程序rootjames-fedora:/mnt/hgfs/lmuxNetCommunicator文件編輯(E)查看(豆)蜷端(工)標簽(工)幫助出)root®awes-fedoraaclientaserverroot®ames-fedora'root®amea-fedora>ootjames-fedoraa_clientclientaserverclient.cNetCo
15、mmunicator#IsclientclientxCclientVSxCserverserver.cserverv2.cNetCommunicator)#gccNetCaminunicator#gczcNetCommunicator#IsclientV2serverclientV2kcservers-oserverV2serverV2.c-Ipthread-oclientV2clientV2.c*IpthreadserverV2serverV?croot(?jaires-fedoraNetCommunicator#|圖11NetCommunicator工作目錄PC機測試,測試結(jié)果如下圖所示:
16、rootjames-fedora:/mnt/hgfs/Lmux/NetCommumcator文件任)編輯任)查看(丫)終端(工)標簽幫助出)rooWjaiKS-fedorarootjanies-fedoraootjames-fedoraQtjames-fcd口a*#cd/mnt/hgfs/Linux/NetComfnunicator/NetConununicator#gcc-oclientVZclientV2,c-IpthreadNetCommunicator#gcc-oserverV2serverV2.c-IpthreadNetCommunicatorj#./dientVZMessagetoserver:Hello,I'mtheclient?Messagetoserver:MessageframServer:Hi,Ipnitheserver!圖12客戶端進程rootjames-fedora:/mnt/hgfs/Lmux/NetComniumcator文件。編輯任)查看(丫)隆端(工)標簽幫助出)rootgjames-fedora*)#c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)生間會員制度
- 旅店衛(wèi)生間管理制度
- 政府值班室衛(wèi)生制度
- 企業(yè)停車場衛(wèi)生管理制度
- 陜西省村衛(wèi)生室管理制度
- 醫(yī)院餐廳衛(wèi)生間管理制度
- 衛(wèi)生院防盜防火制度
- 日料店衛(wèi)生規(guī)章制度
- 衛(wèi)生院財務(wù)內(nèi)控管理制度
- 學校衛(wèi)生考評制度
- 2026年1月浙江省高考(首考)地理試題(含答案)
- 職高信息技術(shù)題目及答案
- 2026年各地高三語文1月聯(lián)考文言文匯編(文言詳解+挖空)
- 冰箱安裝施工方案
- 2026元旦主題班會:馬年猜猜樂猜成語 (共130題)【課件】
- 給醫(yī)生感謝信又短又好(5篇)
- 濕疹 (中醫(yī)院皮膚科)
- 實驗室儀器設(shè)備驗收單
- 智能照明系統(tǒng)調(diào)試記錄
- 關(guān)于若干歷史問題的決議(1945年)
- 畢業(yè)論文8000字【6篇】
評論
0/150
提交評論