【最新文章】
JMF 初探
這幾天在研讀JMF API. JMF 是 Java Media Framework 的縮寫。其主要是用在處理 vedio 以及 audio 用的。為什麼 突然.....
JSP 設計思維
初學JSP者,一般均是將所需呈現的資料以及商務邏輯(business logic)或是資料庫的存取指令通通寫在一起。這個做法.....
JSP/Servlet伺服器端中文處理的問題
在一般的動態網頁設計中,我們所寫的網頁都會有表格(form)來接受使用者的輸入,這些輸入值可以.....

JMF 初探

這幾天在研讀JMF API. JMF 是 Java Media Framework 的縮寫。其主要是用在處理 vedio 以及 audio 用的。為什麼 突然會想到要去讀這個API呢?原因是這幾天在玩Skype這個軟體。其實也沒玩什麼,裝好了跟在美國的弟弟玩了一下,絕得 還不錯,利用它可以省下很多的電話費用。不過,我倒是一直在想這樣的軟體是如何寫成的.....

Google了五,六個小時,終於發現到 Sun 有提供 JMF 這個套件,它提供了處理靜態以及即時的(real-time)的 audio 和 vedio 的功能。如果想要做一個類似 Skype 的軟體,這個 JMF API 可要好好拿來仔細讀一讀。所以,又花了三個多小時 Google 了一些範例程式,基本上,我只想要看看如何在一台電腦上(電腦A)執行程式,它可以捕捉麥克風的輸出,然後將聲音傳送到 另一台電腦(電腦B),電腦B這一端必須能夠聽到電腦A所傳來的對話。(就是單方的,一方講,另一方可以聽到他在講啥。) Sun 的網站提供了兩個範例程式: AVReceive2.java 以及 AVTransmit2.java。因此,剛好可以拿來 驗證及實作上面的想法。

花了好多時間測試,可是一直無法達到目標,所以,跑去把整本API看過一遍,然後跑去 Java Soft 的 Fourm 找看看別人如何解決的,慢慢地有了一些頭緒了。 發現到在我的電腦A上,我必須用如下的方式啟動才行:
java AVTransmit2 dsound:// 192.168.0.255 22222 (p.s. using 255 for subnet broadcasting)
我怎麼會知道第一個參數呢?當你安裝完 JMF API 後,在檔案夾中有一個檔案叫做 jmfregistry.exe,可以用它來看看這台機器支援哪些捕捉裝置(Capture Devices)。 在我的電腦A中,它顯示出有兩個:一個是 JavaSound 另一個是 DirectSound。之前我一直用 JavaSound,可是怎麼都試不出來,還出現一堆錯誤,可能是電腦A本身的 裝置就沒有安裝好。所以我就把第一個參數改成使用 DirectSound。接著啟動電腦A的程式(AVTransmit2),然後也啟動電腦B的程式(AVReceive2)。
java AVReceive2 192.168.0.104/22222 (p.s. 104 is the IP of computer A)

敲了老半天 電腦A的麥克風,可是電腦B中的耳機還是沒聲音。弄到這裡,真的有點給它頭暈了,跑去跟神貓祈禱給我力量,上來後突然想到:會不會是B中的耳機音量沒開呢?哈!果真如此, 總算在電腦B聽到了電腦A傳來的聲音了。雖然兩者相距只有兩公尺,但是,能夠藉由Internet配合JMF API聽到遠方的聲音,那種感覺真的很高興。好累喔.....,不過, 似乎讓我想到了一個不錯的專題來了。Audio Conferencing - Using JMF。

JSP 設計思維

初學JSP者,一般均是將所需呈現的資料以及商務邏輯(business logic)或是資料庫的存取指令通通寫在一起。這個做法的一個好處是可以很快的 得到結果。但是程式總是因為一大堆不可控制的因素改來改去,因此,上面的作法對於將來程式碼的維護以及修改會造成相當大的困難。

從MVC設計的觀點,JSP應該只負責資料如何來顯示,不應該牽涉到商務邏輯的執行或是後端資料庫的存取。因此,以此觀念為基礎,我們可以單純地 只傳遞 JavaBean 到JSP中供其處理。而在伺服器端,負責控制流程的 Servlet 也藉由 JavaBean 來收集使用者所提供的資料。

JSP/Servlet伺服器端中文處理的問題