pcs final project
DESCRIPTION
PCS Final Project. B95902012 柯杰夫 B95902051 張嫚家 B95902058 郭明鑫 B95902088 梁逸安. OUR LOGO. About Our Project -Project 目的. Project 目的. 在這個資訊爆炸的年代,網際網路資訊對於一般民眾的日常生活,早已是不可分割的一部分,無論是學生、教授、上班族抑或是家庭主婦,都曾有不想錯過任何資訊的一刻。. Project 目的. - PowerPoint PPT PresentationTRANSCRIPT
Project 目的 尤其是對於對於大學生來說,上 BBS 已
經成為生活重心的一部分,和同學好友間的聯繫,全依帳於學校的 BBS 站台,一天不上 BBS 可能就失去和同學間談話的主題,或是一天不上 B 就渾身不對勁。
Project 目的 但有時候出門在外,身不由己,手邊沒有
電腦或是無線網路,想要取得資訊亦不可得。基於這些理由,在我們的 project 中我們將結合 iSMS 以及 socket programming ,實作在 BBS 上運作各種BBS 功能,以及在網際網路上擷取各種資訊的功能,
寄信 EX :
舉例來說,假如1. 某人的批兔帳號為 freetemp0 ,2. 密碼為 kerker ,3. 想要寄信給 kuokuo321 ,4. 信件標題為 hello ,5. 信件內文為 HelloWorld
Po文 EX :
舉例來說,假如1. 某人的批兔帳號為 freetemp0 ,2. 密碼為 kerker ,3. 想要在 kuokuo321 這個看板上 po 文,4. 文章標題為 hello ,5. 文章內文為 GoodMorning ,
群組寄信 方法:
在第一個參數打上” mgroup” ,第二個參數之後,直到使用者打入一個參數叫” idend” (表示收信人名單結束)之前,都是群組收信人的 id ,收信人名單不限數目,可以輸入很多收信人。而在idend 之後的第一個參數為信件標題,而標題之後的所有參數是信件內文,每個參數代表內文的一行,不限行數。
群組寄信 EX :
於是他在簡訊裡打的就會是:ptt mgroup freetemp0 kerker- kuokuo321 hotlin1224 ec2522 rbx- idend 大家好 注意 明天中午 -
202 實驗室集合 以上這樣就可以完成我們的要求。
新增好友 EX :
舉例來說,假如1. 某人的批兔帳號為 freetemp0 ,2. 密碼為 kerker ,3. 想要將 kuokuo321 , hotlin1224 ,ec2522 , rbx 等人加入好友
刪除好友 EX :
舉例來說,假如1. 某人的批兔帳號為 freetemp0 ,2. 密碼為 kerker ,3. 想要將 kuokuo321 , hotlin1224 ,ec2522 , rbx 等人從好友名單刪除
NBA運彩賠率查詢 方法:
當我們想要查詢今天 NBA 運彩的賠率時,我們在訊息中打上 lottery 這個參數,第二個參數如果打上 0 ,可以查詢本日NBA 的運彩賠率,如果第二個參數打上1 時,可以查詢明天 NBA 的運彩賠率,以便今日下注。
Web實作方法 Way 1:
直接使用和實作 BBS相同的方法抓封包,並且使用 socket programming by http(port 80) ,然後用 read 去 get 回傳的封包 ( 預估會含有 html 的原始檔 ) 在利用c語言中的字串處理,留下我們所需要的資訊。
Web實作方法 實行上的困難 :
查詢網頁的雜訊太多 ( 可能同時用框架包含多個網頁 ) ,如此收到的封包判讀不易導致寫入 socket 裡的 data 使得網頁 sever判讀錯誤,無法回傳我們所需要的資訊。
此外,處理 html原始檔也不是件輕鬆的事所以我們放棄直接使用 C 的 socket programming 直接實作的方法。
Web實作方法 Way 2:
利用 python 這個 lib強大的程式語言,使用 uropen( 網頁網址 ) 就可以得到那個網頁的 html ,再從 html 中看出我們所需要的資訊會被包含在 <div class=pexplain>後,再把這些所需要的資訊 append 在結果的字串之後。
Web實作方法 實行上的困難 :
首先,在工作站執行的時候就發現編碼的問題,從網頁抓下來得是 UTF-8 的編碼,在我們正常的狀況下,顯示皆為亂碼,但輸出到 txt檔再開啟發現就沒事,所以一開始我們想辦法把結果寫到 txt檔之中,然後在 printf 出來,但此方法 is a wrong way!
Web實作方法 解決之道 :
因此,我們又像強大的 python lib 求救,發現了可以用 encode把他先變成unicode 在 decode 成 BIG-5 ,這樣顯示出來的就是可讀的文字了。
Web實作方法 實行上的困難 2:
再者, python 為直譯式語言,所以執行並沒有供 iSMS 的使用的執行檔可用,為此,我們想辦法把 python包在 c語言裡面 ( 利用crosscompile ,得到執行檔 ) 而為了要辦到讀簡訊及可當 input 給 program ,所以我們必須使用argv ,再好不容易統整好了 c 的 argv 到 python的之後,放到 iSMS 上卻發生了語法錯誤 !
Web實作方法 解決之道 :
在萬般無奈之下,我們只好從”本質上”去解決這個問題。為此,我們開始研究iSMS平台的作用方式,從這邊我們發現, command.ini 裡面就跟我們一般寫的程式語言一樣,可以直接用 echo 就寫出顯示的訊息 ( 不過他就不會執行到MsgBox ,所以沒有 Sender…. 之類的 )
Web實作方法 解決之道 :
而每個 command 後的 $msg 就是執行結果所存到的地方,還有,也是最重要的就是 Exec跟我們寫過的 Exec 一樣就是找到路徑中的程式來執行 ( 沒有限定要在cgi-bin底下 ) 。
Web實作方法 解決之道 :
而每個 command 後的 $msg 就是執行結果所存到的地方,還有,也是最重要的就是 Exec跟我們寫過的 Exec 一樣就是找到路徑中的程式來執行 ( 沒有限定要在cgi-bin底下 ) 。
Web實作方法 解決之道 :
所以,當我們要使用 python 、 perl 之類直譯式的程式,我們就 Exec python.exe在放入 dic.py 這樣就可以了,一定要有執行檔的迷思就這樣解除了,我們也順利的完成了 Query 這部分的簡訊功能。