2008年6月7日

如何用REBOL寫TCP/IP的Server程式


在「如何用REBOL寫TCP/IP的Client程式」一文中,我說明了Client程式的寫法,現在這篇文章說明Server程式的寫法,程式碼請參考這篇DocBase文章的Pong Server。重點整理如下:

  1. Server會先Open自己電腦上的一個Listen Port,並開始聆聽(Listen)連線請求。對於REBOL來說,只要呼叫Open函數來開啟伺服器的Port,就會同時進行Listen(你不需要呼叫Listen,也沒有這樣的函數可用)。
  2. 當Client呼叫Open,並指定連到Server的IP和Port時,Server就會收到Accept的事件。處理Accept事件的方式是呼叫First,會得到一個Service Port。Server的Awake函數必須傳出false(表示任務尚未完成),否則會結束Listen,只能服務一人。
  3. Listen Port繼續接受來自其他Client的新連線請求,而Service Port開始和連線上的Client溝通。也就是說,Listen Port和Service Port兩個是不同的Port,且Listen Port只有一個,且可能產生出多個Service Port。
  4. Service Port會進行Read、Write、Close動作(函數),會分別收到Read、Wrote、Close事件。這部分和「如何用REBOL寫TCP/IP的Client程式」一文類似,不再贅述。
  5. 通常Service Port會先呼叫Read(而非Write),以讀取來自客戶的請求內容。

沒有留言: