今更だけど、Chat server を作ってみる。
- [*] 並列処理の学習。
- [*] select, poll システムコール。
- Windowsではsocketのみがselectの管理対象に。
- [*] python 標準モジュール内のSocket関連のクラスを調査。
- SocketServer
- asyncore, asynchat
- サーバーはスレッドを使わない。select basedの並列処理。
GUIとの連係。
- クライアント側は、blocking を発生させない。
- non-blocking
- 通信部分を別threadにする。
Protocol:
- 行指向なプロトコルで、
- 先頭4文字がメッセージ・タイプ、
- TAB区切りで
- 以降行末までメッセージが続く。
- データ部がない場合は、TABを省略してもよい。
- 行末の改行コードは、\x015 \x012
とりあえずここまで実装する。
($type,$data) = /^([A-Z]{4})\t(.+)$/;
HELO ... 接続した時最初に送られるメッセージ。
NICK ... 名前の通知
NAME ... 同上
PING ... 接続中なのを確認する為。
PONG ... PINGに対する応答メッセージ。
MESG ... 会話データ
QUIT ... 切断