网路应用程式实习.ppt_第1页
网路应用程式实习.ppt_第2页
网路应用程式实习.ppt_第3页
网路应用程式实习.ppt_第4页
网路应用程式实习.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

網路應用程式實習 (1)、(2),實習規範,目的 規格 關聯 背景需求 設備需求,目的,瞭解網路驅動程式的原理與程式架構,及如何在Linux Target端架設ghttp server並作相關的運用。,技術背景-設備需求,技術背景需求 具 C 語言程式設計基礎 設備需求 H/W requitrement PC Host, COM port,網路 Hub Creator XCsale-PXA270 Development Kit S/W requitrements : Linux for Creator XScale-PXA270 user guide。 Create-XScale-PXA270 Users Guide。 通訊軟體:例如Windows的超級終端機。,實習系統概論,簡介 系統架構 電路架構 程式流程,簡介,在理論部分將針對下列幾點加以說明: 網路介面驅動程式 TCP/IP通訊協 HTTP超文件傳輸協定(HyperText Transport Protocol) CGI程式設計 在實作部分將包含下列幾點: 編譯和安裝ghttp server。 利用Windows Host的browser連結上ghttp server。 利用gpttp完成影音檔案的傳輸和播放。 利用gpttp完成遠端控制Linux Target端LED的明亮。,系統架構,電路架構,程式流程,WebLed程式Windows Host、Linux Target、CGI程式架構圖,程式流程(cont.),WebLed程式CGI程式的訊息傳遞,實驗原理,網路介面驅動程式 TCP/IP通訊協定 HTTP超文件傳輸協定 CGI程式設計,網路介面驅動程式,網路介面驅動程式簡介 不同於字元式裝置和區塊式裝置,網路裝置並不依附在檔案系統中,而是在核心層就直接處理封包的傳遞與接收,因此也不為行程所開啟的檔案所限制。 網路介面和應用程式之間的資料傳遞不是透過和檔案相關的標準系統呼叫,而是像 socket()、bind()、listen()、accept()和connect()這類的系統呼叫,所以在Unix系統裡“任何東西都是檔案”的觀念,在網路裝置並不適用。 網路驅動程式必須非同步(asynchronously)地接收外界的封包 網路驅動程式會要求將進來的封包推向核心,網路介面驅動程式 (cont.),網路驅動程式架構圖,網路介面驅動程式 (cont.),註冊網路裝置 struct *net_device alloc_netdev( ) / alloc_etherdev( ) ether_setup() register_netdev( ),網路介面驅動程式 (cont.),網路介面的初始化 snull_init( ) struct net_device 卸載網路模組 unregister_netdev( ),網路介面驅動程式 (cont.),開啟與關閉 在介面傳輸封包之前,必須先以ifconfig開啟介面,並賦予IP位址 ifconfig設定IP位址給介面時: ioctl(SIOCSIFADDR) 設定軟體位址給介面 ioctl(SIOCSIFILAGS) 要求驅動程式開啟、關閉介面 觸動open及stop open() 設法取得必要的系統資源(佔領IRQ, IObase, buffer) 要求介面硬體起動 讀出MAC, 複製到 dev dev_addr (也可作在init或probe時) 將dev dev_addr設定至介面MAC暫存器中 stop() 停止介面硬體 歸還系統資源,網路介面驅動程式 (cont.),封包的傳送與接收,網路介面驅動程式 (cont.),封包傳送,網路介面驅動程式 (cont.),封包接收,網路介面驅動程式 (cont.),中斷處置 Interrupt happen when A new packet has arrived Transmission of an outgoing packet is completed Something happened: PCI bus error, cable length change, time out Interrupt status register (ISR) Packet reception:Pass to the kernel Packet transmission is completed:Reset the transmit buffer of the interface Statistics,TCP/IP通訊協定,TCP/IP通訊協定簡介 TCP/IP是 Transmission Control Protocol (TCP) 和 Internet Protocol (IP) 的簡稱,為網路上的一種通訊協定 。 TCP/IP 是一個開放的標準,任何人均可自由的下載和 TCP/IP 相關的技術標準和文件 。 有了這些規則,即使是不同的電腦設備與作業環境,都可以透過這些通訊協定來互通訊息。同時也是因為這些規則,Internet 才可能有這麼多應用 ( WWW、E-Mail、FTP、Telnet 等 )。,TCP/IP通訊協定 (cont.),TCP/IP 的階層架構,TCP/IP通訊協定 (cont.),什麼是 IP 位址? 每一台連上 Internet 的電腦都有一個獨一無二的位址,以方便彼此區分與辨識,這樣資料才不會送錯,這個位址就是 IP 位址 (IP Address)。 目前 IP 位址的長度為 32 位元,通常以四組數字來表達 (xxx.xxx.xxx.xxx),每組數字就是 8 位元長度。,TCP/IP通訊協定 (cont.),認識網域名稱 例如:.tw,HTTP超文件傳輸協定,HTTP超文件傳輸協定簡介 超文件傳輸協定(HyperText Transport Protocol)與其他Web上所使用的主要標準規範的關係,HTTP是用來規範資料的傳輸的、HTML及VRML是用來規範在用戶端展示文件的、而CGI則是規範伺服器端與應用程式的介面的。,HTTP超文件傳輸協定 (cont.),HTTP規範沿革 目前最成熟的HTTP規格是HTTP/1.1(RFC2068) January 1997, 是在演變成網際網路正式標準過程中的一份草案,這是由IETF(Internet Engineering Task Force)下所屬HTTP Working Group(HTTP-WG)所編訂。 所有的標準草案可分為Internet Drafts及Request for Comments(RFC)。前者為工作文件,有效期六個月,可隨時更改或取消;後者為IETF所屬IAB的永久性文件,有些會發展成為標準,稱為網際網路標準(Internet Standard),故HTTP/1.1正在成為網際網路標準的過程中。 HTTP規格可在/pub/WWW/protocols取得,此外,由 ri.reston.va.us/home.html可察看其他相關規格與消息。,HTTP超文件傳輸協定 (cont.),HTTP功能及用途 它是一種應用階層(Application-level)的通訊協定,特性是輕便、快速,特別適合如Web這種分散式、合作式的超媒體資訊系統 。 HTTP規範用戶(client)與伺服器(server)之間的通訊,用戶是一個程式,它按照HTTP的規範建立一個通達伺服器(另一個程式)的連結(connection)以送出其要求(request);所謂要求就是對在某一伺服器上的資源(resource)請其做某種動作, ghttpd ghttpdGaztek HTTP Daemon是UNIX系统下的web伺服器程式,它是免费下载的軟體並公開原始程式碼。ghttpd支持CGI是一款容易配置的HTTP 服務器。,CGI程式設計,CGI程式設計簡介 CGI 是 Common Gateway Interface 的簡稱,一般中譯為:共通閘道介面。 Common 是指共通的、不限於一種作法的意思,在這裡指的是語言的獨立性,換言之,可以用任何一種程式語言來實作。常見的語言有 Perl、Python、C、C+、VB 。 Gateway 是說伺服器的應用能力是經由擴充得到的,它將查詢等要求交由外部程式處理,處理完了之後,再將結果傳回。 Interface 是指一種介面的意思,符合此一介面標準,便可以輕鬆地製作外部程式,而無需去擔心或處理低階的問題。 CGI 程式是 WEB 伺服器應用能力的擴充(Extension),而 CGI 則是此一擴充能力的介面,熟悉瞭解此一介面的原理及運作方式,我們便可以為 WEB 伺服器建立即時互動的能力,以滿足客戶端的要求。,CGI程式設計 (cont.),CGI 架構圖,CGI程式設計 (cont.),撰寫 CGI 程式需要那些工具 UltraEditor vi (Unix 系統中的編輯器) CGI 程式設計如何入門 一點程式語言的基礎,不需要太高深,但至少基本的觀念要了解。 了解 CGI 程式的基本觀念和原理,最好找一本 CGI 的入門書籍來看看。 觀摩別人的程式,由模仿開始。並動手實作 CGI 小程式。 培養 CGI 偵錯的能力和經驗。 多和別人討論並交換心得經驗。 自定一個中型程式為目標,轉變模仿的作法,加入自己的創意和想法,開始建立自己的風格。 不斷地看書、吸收新知,尋求突破和進階。,CGI程式設計 (cont.),第一支 CGI 程式 #! /usr/bin/perl # (第一列用來指出 perl 的路徑) # (第二列開始,若有出現 # ,則表示該列為註解,# perl 將不會執行它) print “Content-type:text/htmlnn“; # 這是 MIME 表頭,用來告訴瀏覽器要送出的資料型態是什麼? # 一定要寫出這一行,否則會出現 Error 500 錯誤 # 注意:每列命令用 ; 做為結束! # 接下來印出欲顯示的網頁內容 print “CGI 哈囉!“; print “; print “Hello, world!“; print “;,CGI程式設計 (cont.),執行方法 將 CGI 程式用 FTP 軟體送上網頁 cgi-bin 目錄中 附屬檔名通常為 .cgi 或 .pl 注意一定要用 ASCII 模式上傳,否則會出現 Error 500 錯誤 將 CGI 程式屬性改為 755 在您的瀏覽上位址列處鍵入:http:/主機位址/cgi-bin/hello.cgi,CGI程式設計 (cont.),CGI如何取得傳遞資料 GET 此法會將資料以鍵和值(Key-Value)成對的方式,附加在 URL 之中,若有兩項以上的資料,則各對鍵值之間用 & 隔開。 http:/主機位址/cgi-bin/test.cgi?name=John&age=18 POST POST 利用 HTML 語法的 Form 表單,由瀏覽器將鍵值傳給伺服器,並放入伺服器的標準輸出入機制中,由於它沒有 GET 的缺點,因此可以傳送較多的資料,一般而言,我們大多使用 POST 的方式,CGI程式設計 (cont.),CGI如何將傳遞資料解碼 某些字元對伺服器而言具有特殊意義,若欲傳遞給 CGI 程式處理的資料中含有這些字元,那麼瀏覽器會對這些字元予以編碼,CGI 程式在取得這些經過編碼的資料後,必須進行解碼的動作,才能將傳遞的資料予以還原。 if ($ENVREQUEST_METHOD eq POST) read(STDIN, $temp, $ENVCONTENT_LENGTH); else $temp=$ENVQUERY_STRING; key_value=split(/ 此時 %data 這個雜湊陣列即取得了解碼後的資料,實習步驟,系統軟硬體設置 實作程式碼設置 重要檔案列表 實

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论