LispでServerSocketを作成
Socketの作成には、make-socket関数を使用する。引数がたくさんあるが、make-socketのドキュメント(Clozure CL Documentation)には使用例がいくつか紹介されている。
今回は、ServerSocketなのでlistener-socketを参考にする。
?(make-socket :type :stream :connect :passive) #<CCL::LISTENER-SOCKET #xC4D5356> ?
単純にドキュメント通りやってみたが、これではどのポートをリスンしているかとか全然わからないし、作成したSocketにアクセスすることもできない。この点を改善するとこんな感じか。
?(setf server (make-socket :type :stream :connect :passive :local-host "localhost" :local-port '7001)) #<CCL::LISTENER-SOCKET #xC4D664E> ?
ほかにも様々なオプションを指定してSocketをOpenできる。具体的に指定できるオプションは、Clozure CL Documentationにある。
上記コマンド実行後、netstat を取得。
$ netstat -an | grep 7001 tcp4 0 0 127.0.0.1.7001 *.* LISTEN $
ここで、このSocketをクローズしてみる。
?(close server) T ?
もう一度netstatを取得すると、
$netstat -an | grep 7001 $
完璧だ。