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,]socketSocketObject[]の形式である.
  • SocketListen[]SocketListenerオブジェクトを与える.
  • ZMQソケットについては,デフォルトで,完全なメッセージが受信されたかどうかにかかわらず fun が適用される.
  • 生のTCPソケットについては,デフォルトで,オペレーティングシステムによって生成されたすべてのデータバッファに fun が適用される.
  • SocketListen[spec,]が新たなSocketObjectを作った場合,返されたSocketListenerDeleteObjectが呼ばれるとそのソケットは自動的に閉じられる.
  • オプション設定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ソケット上で受信し,全データを出力する:

Webブラウザでソケットに接続する:

システムブラウザでURLを開くと「メッセージ」ウィンドウにリクエストが出力される:

受信を終了する:

クライアントソケットとサーバソケットのペアを作る:

受信するデータのメッセージを変数に保存するために,サーバソケットにHandlerFunctionsを送信する:

クライアントがソケットに書き込むと,サーバはメッセージを出力する:

メッセージを調べる:

HandlerFunctionsに変更し,追加でータをバイトリストとして出力するようにする:

このソケットでのイベントの受信を終了する:

リスナが存在しなくなったので,サーバに送られたメッセージはHandlerFunctionsを呼ばない:

ハンドラ関数はmsgの値を更新しなかった:

メッセージはSocketReadMessageを使ってサーバから読むことができる:

ソケットを閉じる:

オプション  (4)

HandlerFunctionsKeys  (1)

ByteArrayとしてのデータだけになるように"DataByteArray"を使ってHandlerFunctionsKeysを変更する:

ソケット上で受信し始めてから値を変える:

HandlerFunctionsKeysの更新された値を示す:

受信を終了してソケットを閉じる:

HandlerFunctions  (1)

HandlerFunctions"DataReceived"イベントで,関数が生成されたデータで実行されるように指定する:

開始してから値を変更する:

受信を終了し,ソケットを閉じる:

CharacterEncoding  (1)

文字列キー"Data"を別の文字コードで符号化し,"DataBytes"は通常通りに符号化して,メッセージを受信する:

メッセージを調べて符号化の違いを見る:

受信を終了し,ソケットを閉じる:

RecordSeparators  (1)

ソケット上で受信し,ホワイトスペースでメッセージを分割する:

クライアントを作り,リスナのソケットにこのクライアントについてのメッセージを送る:

msgsはこのメッセージ文字列をRecordSeparatorsの値で分割する:

受信を終了し,ソケットを閉じる:

ソケット上で受信し,設定したバイト数でメッセージを分割する:

アプリケーション  (1)

Webサーバを開始し,応答として全クライアントに基本的なHTMLページを送り返す:

Wolfram言語から結果をインポートする:

システムブラウザでWebサイトを開く:

受信を終了し,ソケットを閉じる:

インタラクティブな例題  (1)

ソケット上で受信し,メッセージが受信され次第循環的なメッセージを書き込むことを継続的に行う:

最初のメッセージを書き込む:

文字列の動的反復を可視化する:

受信を終了し,ソケットを閉じる:

Wolfram Research (2017), SocketListen, Wolfram言語関数, https://reference.wolfram.com/language/ref/SocketListen.html (2021年に更新).

テキスト

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

BibTeX

@misc{reference.wolfram_2024_socketlisten, author="Wolfram Research", title="{SocketListen}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/SocketListen.html}", note=[Accessed: 21-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_socketlisten, organization={Wolfram Research}, title={SocketListen}, year={2021}, url={https://reference.wolfram.com/language/ref/SocketListen.html}, note=[Accessed: 21-November-2024 ]}