這個也是修『分散式系統』的作業之一。(上一個作業: RPC聊天室)這次作業的內容要求都一樣,只是要用 Java 的 RMI 來寫。RMI 實際上是用 socket 溝通,只是實際運作細節由 RMI 隱藏,程式設計師不需要處理。程式語言為 Java,有使用 Java applet。


  因為是使用 Java 所以想說做一個介面出來比較好看,在程式的右邊可以看到目前聊天室有誰,點選別人可以和他說悄悄話。而這個程式的架構主要始建立一個 Thread 定時去和 Server 要求最新的訊息,也是將每筆訊息加上一個 ID,以免抓到重複的訊息。而在寫這個程式的時候遇到了滿多的問題,因為助教給的資訊沒有很多,所以到最後是自己去網路上找尋相關的資料來完成的。首先碰到最大的問題就是寫好的 Server 無法啟動,原因是因為不能建立 localhost 的連線。找了很多相關的資料才知道是因為 Java 安全機制的原因,要修改他的 policy 檔案,允許任何連進 port 1099(RMI 預設使用的 port) 的連線。Server 可以啟動之後,卻發現非本機的 IP 連不進來,這樣聊天室只能和本機的程式聊有什麼意義...|||,找了半天終於找到了解決方發,在啟動 Server 的時候要指定該 Server 要使用的 policy 檔案,而此檔案裡面寫的規則是允許任何連進本程式的連線。啟動方式為...

  java -Djava.security.policy=./policy ChatRoom

  這兩個算是比較大的問題解決後,之後就比較順利了。不過本來是想說根據每個人的暱稱,讓他在說話的時候使用不同的顏色上色以便分別,但是用了老半天卻不知道要怎麼用,因為我用來顯示訊息的是一個 EditBox,似乎無法控制每一行的顏色,只能一改改整體的,不過或許是我不知道怎麼用而已...|||

  Java 算是我比較不熟悉的程式語言,不過對我來說,只要是程式我都能夠埋頭研究,抱著一本 Java 的書就開始這邊寫寫那邊寫寫,最後完成的時候真的很有成就感!
創作者介紹

程式之旅、職場之路...

qazq 發表在 痞客邦 PIXNET 留言(2) 人氣()


留言列表 (2)

發表留言
  • 小葉
  • 你好~我要做畢業專題!!是要寫即時通的程式我找了好多書籍我都寫不出來我是要配合android開發手機版的即時通!另外追加定位功能!能和大大請教一下資訊麻??
  • 小安
  • 我要做的就是RMI 聊天室
    不知道可不可以給我程式碼
找更多相關文章與討論