このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

maximaとの通信方法、ソケットが既に使われているときの挙動

なんとmaximaはネットワーククライアントになる。サーバーじゃなくてクライアント!ここが既にハマリ所だが、使用されているソケットにクライアントとして接続しに行くと、次のように死ぬ。


bin > .\maxima.bat -s 4000
Connecting Maxima to server on port 4000

[hiyama@TP-X220-HIYAMA C:\Installed\maxima-5.40.0\bin]
bin > .\maxima.bat -s 4010
Connecting Maxima to server on port 4010

*** - handle_fault error2 ! address = 0x7aa5dd00 not in [0x61a94b88,0x61cc0000) !
SIGSEGV cannot be cured. Fault address = 0x7aa5dd00.
GC count: 0
Space collected by GC: 0 0
Run time: 0 2340015
Real time: 0 2350134
GC time: 0 0
Permanently allocated: 92960 bytes.
Currently in use: 9461644 bytes.
Free space: 151 bytes.

非存在ソケットなら、普通のエラー。


bin > .\maxima.bat -s 4000
Connecting Maxima to server on port 4000

Unable to connect Maxima to port 4000.
Error: Winsock error 10061 (ECONNREFUSED): Connection refused

最初に、未使用ソケットを使用して、netcatでサーバーを動かしておく。


$ nc -l -p 4000

それから、maximaを当該ポートに接続する。と、サーバー側でコンソールからmaximaと対話ができる。サーバー側コンソールで、quit(); として接続を切断できる。