SocketListen
SocketListen[socket,fun]
ソケット上でデータが受信されるたびに,非同期的に fun を適用して指定されたソケット上で受信し始める.
SocketListen[port,fun]
指定されたポート127.0.0.1のアクティブな接続を受信し始める.
SocketListen[address,fun]
ローカルマシン上の指定したアドレス address でアクティブな接続を受信し始める.
SocketListen[spec,opts]
オプション opts を使って spec で定義されたアクティブな接続を受信し始める.
SocketListen[spec]
spec で定義されたアクティブな接続を受信し始めるが,ハンドラ関数等を設定はしない.
詳細とオプション
- SocketListen[socket,…]の socket はSocketObject[…]の形式である.
- SocketListen[…]はSocketListenerオブジェクトを与える.
- ZMQソケットについては,デフォルトで,完全なメッセージが受信されたかどうかにかかわらず fun が適用される.
- 生のTCPソケットについては,デフォルトで,オペレーティングシステムによって生成されたすべてのデータバッファに fun が適用される.
- SocketListen[spec,…]が新たなSocketObjectを作った場合,返されたSocketListenerでDeleteObjectが呼ばれるとそのソケットは自動的に閉じられる.
- オプション設定RecordSeparators->"s"あるいはRecordSeparators->{"s1","s2",…}のとき,fun は,s または siにマッチする連続する区切り間に受信されたデータの各ブロックに適用される.
- 関数 fun は各イベントを表す連想に,次のデフォルトキーで適用される.
-
"Data" 文字列として受信されたデータ "Socket" 受信中のSocketObject "SourceSocket" イベントを生成したSocketObject "Timestamp" イベントが生起した時間(DateObjectオブジェクトとして) - 次の追加的なキーもまたHandlerFunctionsKeysでリクエストすることができる.
-
"DataBytes" バイト値のリストとして受信された生のデータ "DataByteArray" ByteArrayオブジェクトとして受信された生のデータ "MultipartComplete" マルチパートZMQメッセージが完全かどうか - SocketListenで使用可能なオプション
-
CharacterEncoding $CharacterEncoding 仮定する文字コード HandlerFunctionsKeys Default データの連想に含めるキー HandlerFunctions Automatic ソケットイベントをどのように扱うか RecordSeparators None メッセージをどのように分割するか - ソケット上での受信中に次のイベントを生成することができる.
-
"DataReceived" データの連想に含めるキー
例題
すべて開くすべて閉じる例 (1)
スコープ (2)
使用中のシステム用の公開ポートのTCPソケット上で受信し,全データを出力する:
システムブラウザでURLを開くと「メッセージ」ウィンドウにリクエストが出力される:
受信するデータのメッセージを変数に保存するために,サーバソケットにHandlerFunctionsを送信する:
クライアントがソケットに書き込むと,サーバはメッセージを出力する:
HandlerFunctionsに変更し,追加でータをバイトリストとして出力するようにする:
リスナが存在しなくなったので,サーバに送られたメッセージはHandlerFunctionsを呼ばない:
メッセージはSocketReadMessageを使ってサーバから読むことができる:
オプション (4)
HandlerFunctionsKeys (1)
ByteArrayとしてのデータだけになるように"DataByteArray"を使ってHandlerFunctionsKeysを変更する:
HandlerFunctionsKeysの更新された値を示す:
HandlerFunctions (1)
CharacterEncoding (1)
RecordSeparators (1)
ソケット上で受信し,ホワイトスペースでメッセージを分割する:
クライアントを作り,リスナのソケットにこのクライアントについてのメッセージを送る:
msgsはこのメッセージ文字列をRecordSeparatorsの値で分割する:
アプリケーション (1)
テキスト
Wolfram Research (2017), SocketListen, Wolfram言語関数, https://reference.wolfram.com/language/ref/SocketListen.html (2021年に更新).
CMS
Wolfram Language. 2017. "SocketListen." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2021. https://reference.wolfram.com/language/ref/SocketListen.html.
APA
Wolfram Language. (2017). SocketListen. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/SocketListen.html