rontolisp:tcp-local-address rontolisp:tcp-peer-address rontolisp:tcp-peer-port
(rontolisp:tcp-local-address handle) -- (rontolisp:tcp-peer-address handle) -- (rontolisp:tcp-peer-port handle)
TCP ハンドルのアドレス取得関数です。tcp-local-address はリスナーまたは
ソケットハンドルのローカル(バインド先)IP アドレスを文字列で返します。
tcp-peer-address と tcp-peer-port は接続済みソケットハンドルのリモート
IP アドレス(文字列)とリモートポート(整数)を返します。
rontolisp:tcp-local-port と合わせて、
usocket シムの usocket:get-local-* /
usocket:get-peer-* アクセサを支えています。
peer 系アクセサはリスナーハンドルを拒否します(リスナーに peer は ありません):
$ rontolisp
> (setq l (rontolisp:tcp-listen 0 "127.0.0.1"))
> (rontolisp:tcp-peer-address l)
Error: tcp-peer-address expects a connected socket handle
バックエンドごとの対応
- インタープリタと JVM: 対応する
java.net.Socket/ServerSocketのgetLocalAddress()/getInetAddress()/getPort()を使用します。種類の 合わないハンドルはエラーを通知します(インタープリタ)/キャストエラーで 失敗します(JVM)。 - WASM: ソケットアダプタには接続されておらず、コンポーネントモードでは
3 つとも
nilを返します(splice された usocket プログラムがそのまま コンパイル・実行できるようにするためです)。Preview 1(コアモジュール) モードでは他の tcp 組み込みと同様コンパイルエラーです。 - ブラウザプレイグラウンド: 非対応。