SocketOpen
SocketOpen[port]
ローカルホスト port へのTCP接続が可能なソケットを開き,ソケットを表すSocketObjectを返す.
SocketOpen[address]
指定されたローカルアドレスへのTCP接続が可能なソケットを開く.
SocketOpen[address,"protocol"]
指定されたプロトコルでの接続が可能なソケットを開く.
SocketOpen[address,{"protocol","type"}]
指定された protocol および type の接続を許容するソケットを開く.
詳細
- サポートされるプロトコル
-
"TCP" 生のTCPストリームプロトコル "ZMQ" ZeroMQの1対1のメッセージプロトコル {"ZMQ","type"} 指定のタイプのZeroMQプロトコル - 次は,ZMQソケットについて可能なタイプである.
-
"Pair" 厳密に1つのクライアントピアと送受信できるソケット "Publish" 接続されているすべてのクライアントにメッセージを送信するソケット "Subscribe" 公開者ソケットからメッセージを受信するソケット "Request" 対応する応答ソケットに要求メッセージを送信し,応答メッセージを受信するソケットs "Reply" 対応する"Request"ソケットから要求メッセージを受信し,応答メッセージを送り返すソケット "Dealer" 送信されたメッセージが接続されたすべてのクライアントにラウンドロビン形式で配信されることを除いて,"Request" ソケットと同じ "Router" メッセージが接続されたすべてのクライアントから公平キュー形式で受信されルーティング情報を維持することを除いて,"Reply" ソケットと同じ "Pull" メッセージを受信するパイプライン位相のソケット "Push" メッセージを送信するパイプライン位相のソケット "XPublish" このソケットで受信したメッセージがサブスクリプションであることを除いて"Publish"と同じ "XSubscribe" このソケットで送信したメッセージが対応する"XPublish"ソケットのサブスクリプションとして使われること除いて"Subscribe"と同じ "Stream" ZMQソケットを非ZMQ TCPソケットに接続するためのソケット - ZMQプロトコルタイプの指定がない場合,もとになるソケットは{"ZMQ","Pair"}ソケットである.
- SocketOpenはローカルマシンでのみソケットを開く.
- SocketOpenはローカルアドレスしか使えない.次は可能な形式である.
-
{host,port} ローカルのホスト名またはIPアドレスとポート番号 {host,"service"} ローカルのホスト名またはIPアドレスとサービス名 "host:port" ポートのあるローカルのホスト名またはIPアドレス {host,Automatic} 指定されたホスト上の使用可能なポート Automatic ローカルホスト上の使用可能なポート - ホスト名は"www.wolfram.com"のような形式である.
- IPアドレスは,"140.177.0.0"あるいはIPAddress[string]として与えることができる.string はIPv4またはIPv6のIPアドレスである.
- SocketConnectを使ってSocketOpenで開かれたソケットに接続することができる.ソケットが1つのマシンで開いているという事実は,他のマシンでこれに接続できることを保証はしない.
- 確立すべき接続については,プロトコルが一貫していなければならず,接続を阻むファイヤーウォール等があってはならない.
- 異なるZMQソケットタイプの扱い方についての情報は,ZeroMQ documentationを参照のこと.
- Closeを使ってSocketOpenで開いた接続を閉じることができる.
例題
すべて開くすべて閉じる例 (2)
スコープ (3)
クライアントが開かれたTCPソケットに接続した後では,各クライアントは特性"ConnectedClients"を持つSocketObjectとして接続することができる.
サーバソケットを開き,接続を許可し,クライアントをソケットに接続する:
これらのソケットは,Socketsでリモートソケットとしても表示される:
アプリケーション (1)
SocketOpenを使い,WebサーバをWolfram言語で実装する.
考えられる問題 (1)
SocketOpenから返されたソケットに書き込むことはZMQソケットでしかできない.TCPソケットの場合は"ConnectedClients"特性を使わなければならない.
TCPソケットとZMQソケットを開き,クライアントを接続する:
テキスト
Wolfram Research (2017), SocketOpen, Wolfram言語関数, https://reference.wolfram.com/language/ref/SocketOpen.html (2020年に更新).
CMS
Wolfram Language. 2017. "SocketOpen." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2020. https://reference.wolfram.com/language/ref/SocketOpen.html.
APA
Wolfram Language. (2017). SocketOpen. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/SocketOpen.html