TCP/IP組込み関数
Easy-ISLisp ver5.10においてTCP/IP関連の基本的な機能をもつ関数を組込みにしました。従来、CラッパーによるTCP/IPライブラリが付属していたのですが、この際、組込みにして仕様変更、入れ替えることとしました。このライブラリ作成にあたってはPoldyさんにお世話になりました。その節はありがとうございました。C言語で書き直し、場合によっては仕様を拡張する柔軟性を持たせています。Easy-ISLispの名前のごとくTCP/IP関数もとってもイージーになっています。
仕様
〇 (create-server-socket n) サーバー用にポート番号nでソケットを生成します。
〇 (create-client-sokcet n IP) クライアント用にポート番号と相手方IPアドレスによりソケットを生成します。
〇 (send-socket socket str) ソケットに文字列strを送信します。
〇 (recv-socket socket) ソケットから文字列を受信します。
〇 (close-socket socket) ソケットを閉じます。
今のところ基本的な機能しかありません。実用は意図していません。計算実験、通信の理解を目的としています。
サーバー・クライアントの簡単なコード
このようにできるだけ簡単な仕組みでTCP/IPの学習ができるようになっています。
なぜLispでやるのか?
PythonやRubyには優秀なTCP/IP関連の機能があります。豊富なライブラリがあり、実用的に使えます。では、なぜいまさらLispで?
一昔前、インターネットの黎明期においてポールグレアム氏はLispの用いることで成功を収めました。混沌とした時代においてLispにアドバンテージがあったと思います。でも、今となってはそれもなさそうに思えます。
私はLispのもつ同図像性がセキュリティー上の利点にならないだろうか?と考えています。生物学的プログラミングです。ウイルスが変異をして人間のもつT細胞の攻撃を回避することにヒントがないだろうか?という思いつきです。
Lispでなにか面白い遊びはないものか?と日夜、楽しんでおります。
Easy-ISLisp
OSSです。ご自由にお使いください。フェードバッグがもらえると嬉しいです。
https://github.com/sasagawa888/eisl