資源描述:
《socket實現(xiàn)文件上傳下載-嵌入式期末報告.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、.第一部分:移植類1一、實驗?zāi)康模?二、實驗內(nèi)容1三、實驗環(huán)境1四、實驗步驟2五、實驗結(jié)果與討論3第二部分:代碼類3一、實驗?zāi)康?二、實驗內(nèi)容與要求4三、主要儀器設(shè)備4四、實驗內(nèi)容44.1、實驗基本功能44.2主要代碼編寫:44.2.1、實現(xiàn)服務(wù)器功能的主要代碼編寫54.2.2、實現(xiàn)客戶端功能的主要代碼編寫14五、實驗內(nèi)容運行結(jié)果:215.1客戶端和服務(wù)端均在虛擬機(jī)linux下運行215.2虛擬機(jī)linux運行服務(wù)端,開發(fā)板運行客戶端22六、實驗結(jié)果與討論24第一部分:移植類一、實驗?zāi)康?;利用虛擬機(jī),在redhatlinux下編譯一
2、個能在開發(fā)板上成功運行的應(yīng)用軟件二、實驗內(nèi)容在嵌入式Linux中移植一個能播放U盤上的mp3音頻文件的應(yīng)用程序MadPlay。三、實驗環(huán)境Win7、虛擬機(jī)中的redhatlinux頁腳.四、實驗步驟首先通過ftp把四個所需安裝包拷貝到虛擬機(jī)的linux中,然后依次進(jìn)行如下操作:1、創(chuàng)建工作目錄:2、創(chuàng)建如下子目錄以存放不同的源文件目錄說明:tarball目錄用來存放所有的源代碼包src-x86目錄用來存放X86版本的所有源代碼文件src-arm目錄用來存放ARM版本的所有源代碼文件target-x86目錄是X86版本的安裝目錄tar
3、get-arm目錄是ARM版本的安裝目錄設(shè)置環(huán)境變量:將相關(guān)安裝包拷貝到工作目錄中:3、編譯安裝zlib-1.2.3.tar.zip配置4、然后make-àmakeinstall即可5、編譯安裝libid3tag-0.15.1b頁腳.(注:截圖中的第一行代碼后面部分為:-I$TARGET_DIR/include)6、然后make-àmakeinstall即可7、編譯安裝libmad-0.15.1b配置8、然后make-àmakeinstall即可9、編譯安裝madplay-0.15.2b配置10、然后make-àmakeinstal
4、l即可Makeinstall完成后,會在target-arm/bin目錄生成在arm開發(fā)板上可以運行的二進(jìn)制文件madplay,拷貝到user-ftp目錄下;打開超級終端,連接到開發(fā)板上,在超級終端上通過ftp連接到虛擬機(jī),然后使用get命令獲取madplay和mp3文件,退出ftp,運行“./madplaymusic.mp3”即可播放視頻。五、實驗結(jié)果與討論成功播發(fā)音頻文件music.mp3,并演示給老師看,但在實驗結(jié)束后忘記截取了相關(guān)圖像,因此結(jié)果的圖像未展現(xiàn)。第二部分:代碼類一、實驗?zāi)康陌凑战虒W(xué)計劃,本課程要求初步掌握嵌入式基
5、本知識,懂得在開發(fā)板使用wince和linux基本操作,本實驗是利用socket是的開發(fā)板與主機(jī)通信。二、實驗內(nèi)容與要求W頁腳.ince/Linux平臺與windows主機(jī)間使用以太網(wǎng)實現(xiàn)通信,要求在linux/wince/windows上編寫一個TCPsocket數(shù)據(jù)包收發(fā)程序,實現(xiàn)數(shù)據(jù)的通信,如實現(xiàn)文件發(fā)送。(也可以是2個開發(fā)板間的網(wǎng)絡(luò)通信)三、主要儀器設(shè)備1、已連接網(wǎng)絡(luò)的計算機(jī)。2、安裝redhat9的虛擬機(jī)。3、裝有l(wèi)inux的開發(fā)板四、實驗內(nèi)容4.1、實驗基本功能在linux下用C語言編寫,實現(xiàn)如下功能:服務(wù)器端客戶端數(shù)據(jù)
6、的上傳、下載4.2主要代碼編寫:Linux系統(tǒng)下,用文本編輯器編寫ftp客戶端與服務(wù)器端的C語言代碼,另外幾個包含的頭文件。下面是在ftp客戶端和服務(wù)器功能實現(xiàn)中比較重要的代碼。4.2.1、實現(xiàn)服務(wù)器功能的主要代碼編寫Main主函數(shù)定義一些相關(guān)的變量等代碼:頁腳.intmain(intargc,char**argv){intsockfd;intclientfd;uint16_tport;intret;pid_tpid;structsockaddr_inserver_addr;if(2!=argc){printf("usage:com
7、mandlisten_port");return-1;}port=atoi(argv[1]);server_addr.sin_family=AF_INET;server_addr.sin_addr.s_addr=INADDR_ANY;server_addr.sin_port=htons(port);sockfd=socket(PF_INET,SOCK_STREAM,0);if(sockfd<0){perror("opendatastreamsocketfailed!");return-1;}ret=bind(sockfd,(
8、structsockaddr*)&server_addr,sizeof(server_addr));if(ret<0)頁腳.{perror("binddatasocketfailed!");return-1;}ret=listen