SocketConnect

SocketConnect[address]

指定されたアドレスのTCPホストにソケット接続を行い,接続を表すSocketObjectを返す.

SocketConnect[address,"protocol"]

指定されたプロトコルで address のホストに接続する.

SocketConnect[socket]

現行セッションで開かれたローカルソケットに接続する.

詳細

  • 使用可能なソケットアドレス
  • {host,port}ホスト名あるいはIPアドレスとポート番号
    {host,"service"}ホスト名あるいはIPアドレスとサービス名
    "host:port"ホスト名あるいはポートのあるIPアドレス
    portローカルソケットローカルホスト:port
    URL["url"] あるいは "url"完全なURL(例:http://www.wolfram.com)
  • サポートされるプロトコル
  • "TCP"生のTCPストリームプロトコル
    "ZMQ"ZeroMQ1対1対応メッセージプロトコル
    {"ZMQ","type"}指定タイプのZeroMQプトロコル
  • 以下は,ZMQソケットの可能なタイプである.
  • "Pair"厳密に1つのクライアントピアと送受信できるソケット
    "Publish"接続されているすべてのクライアントにメッセージを送信するソケット
    "Subscribe"公開者ソケットからメッセージを受信するソケット
    "Request"対応する応答ソケットに要求メッセージを送信し,応答メッセージを受信するソケット
    "Reply"対応する"Request"ソケットから要求メッセージを受信し,応答メッセージを送り返すソケット
    "Dealer"送信されたメッセージが接続されたすべてのクライアントにラウンドロビン形式で配信されることを除いて,"Request" ソケットと同じ
    "Router"メッセージが接続されたすべてのクライアントから均等化キューイング形式で受信され,ルーティング情報を維持することを除いて,"Reply"ソケットと同じ
    "Pull"メッセージを受信するパイプライントポロジーのソケット
    "Push"メッセージを送信するパイプライントポロジーのソケット
    "XPublish""Publish"と同じだが,このソケットで受信したメッセージはサブスクリプションである
    "XSubscribe""Subscribe"と同じだが,このソケットを介して送信されたメッセージは,対応する"XPublish"ソケットへのサブスクリプションとして使用される
    "Stream"ZMQソケットを非ZMQ TCPソケットに接続するためのソケット
  • ZMQプロトコルタイプが指定されていない場合,もとになるソケットは"Pair"ソケットである.
  • ホスト名は"www.wolfram.com"のような形式である.
  • IPアドレスは"140.177.0.0"あるいはIPAddress[string]として与えることができる.ただし,string はIPv4またはIPv6のIPアドレスである.
  • アドレスがポート番号の指定のないURLとして与えられると,ポート番号は(httpに対してはポート80のように)URLスキームから推定される.
  • SocketConnect[SocketObject[]]を使ってSocketOpenで開かれたローカルソケットに接続することができる.
  • Closeを使ってSocketConnectが開いた接続を閉じることができる.

例題

すべて開くすべて閉じる

  (2)

URLで指定されたサーバと接続する:

ソケットへの基本的なHTTPリクエストを書く:

応答全体を文字列として読む:

余分な新規行なしに結果を表示する:

ソケットとの接続を閉じる:

ZMQソケットを開く:

このソケットに接続する:

サーバソケットに文字列を送る:

クライアントソケットから文字列を読む:

ByteArrayを文字列に変換する:

ソケットを閉じる:

スコープ  (1)

使用可能なポート上でZMQソケットを開く:

マニュアルでポートを指定してこのソケットに接続する:

任意の式をサーバソケットに送る:

クライアントソケットから式を読む:

式のリストをサーバソケットに送る:

クライアントソケットから式を読む:

ソケットを閉じる:

アプリケーション  (1)

この例は,単一のサーバがメッセージを送信して複数のクライアントがこのメッセージを受信するZMQ出版購読型モデルの使い方を示す.話を簡単にするために,この例では送信者(出版側)と複数の受信者(購読側)を同じWolfram Engineのプロセスで動かしている.一般的には,送信者と受信者は異なるプロセスおよび/または異なるマシンで実行されている.

送信者用のソケットを開く:

送信者に複数の受信者を接続する:

すべての受信者がすべてのメッセージを確実に受信するようにする:

まだメッセージは送信されておらず,受信者はメッセージを読む用意ができていない:

送信者からメッセージを送信する:

受信者にメッセージを受信する準備が整った:

すべての受信者でメッセージを読む:

結果のバイト配列を文字列に変換する:

送信者と送信者のソケットを閉じる:

考えられる問題  (2)

ReadStringはサーバによってソケットが閉じられるのを待ってデータを返すので,ReadStringはTCPソケットにしか使うことができない.ZMQはサーバによって閉じられることはなく,無期限にブロックする.

ZMQソケットを開き,クライアントを接続する:

サーバにメッセージを書き込み,サーバを閉じる:

ReadStringは無期限にブロックするようになった:

クライアントのソケットを閉じる:

SocketOpenが開いたTCPサーバソケットを使うときは,ReadStringが返される前に接続を閉じなければならない.

TCPソケットを開きクライアントを接続する:

リモートクライアントにメッセージを書き込み,サーバを閉じる:

ReadStringは,ソケットがまだ閉じられていないので無期限にブロックするようになった:

リモートソケットを閉じるとReadStringが強制的に返される:

ソケットを閉じる:

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

テキスト

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

CMS

Wolfram Language. 2015. "SocketConnect." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2017. https://reference.wolfram.com/language/ref/SocketConnect.html.

APA

Wolfram Language. (2015). SocketConnect. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/SocketConnect.html

BibTeX

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

BibLaTeX

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