2007/05/15

一對多 client and server design

有朋友在問要怎麼寫 client/server 架構的程式。

其實這是基本功夫,參考資料與書目一堆我就不多此一舉再寫,底下稍微描述一下作法。大抵可以分成兩段來寫,一段是彼此建立信任機制,一段是控制。

建立信任機制可以參考 UPnP 的作法,可以讓你達到免設定,但是這邊講的信任機制您還得再加以思考一下,怎麼確認是受信者而非駭客?這牽涉眾多,UPnP 也有類似的機制。對 UPnP 請參考前面關於 GeeXboXushare,djmount 的文章。

一旦你收集了彼此的資訊,那就可以省略設定步驟,否則這一步也可以是提供設定畫面。第二段就是控制,所謂控制就要彼此都有共通的語言,也就是要先建立通訊協定,我建議較簡單的是透過 HTTP 的方式。例如你可以用 busybox 來架設 web server, 或是編進 lighttpd 進行加密通訊。其實若你已經會寫 TCP/IP 的程式,要寫 client/server 的話就容易了,這一段是可以自己寫,而我之所以建議採 HTTP 的方式也只是利用人家定義好的協定而已,本質上跟自己寫通訊協定是一樣的。若採用 http 的話就容易多了,不止已有現成的,連 source code 都有,而且 client/server 端都有很多參考資料。有了通訊協定(就算是自己寫程式也要先有它)之後,再在這層通訊協定上建立專屬的控制命令與傳回值,也就是所謂的協調方式,這一點若是用 HTTP 的話,可以想成是在寫 CGI 即可。

1 意見:

匿名 提到...

excellent