SocketConnect[address]
指定されたアドレスでソケット接続を行い,接続を表すSocketObjectを返す.
SocketConnect[address,"protocol"]
指定されたプロトコルで address のホストに接続する.
SocketConnect[socket]
現行セッションで開かれたローカルソケットに接続する.
SocketConnect
SocketConnect[address]
指定されたアドレスでソケット接続を行い,接続を表すSocketObjectを返す.
SocketConnect[address,"protocol"]
指定されたプロトコルで address のホストに接続する.
SocketConnect[socket]
現行セッションで開かれたローカルソケットに接続する.
詳細
- SocketConnectは,指定された address において,TCP,ZMQ,または WebSocketの3種類のプロトコルのいずれかを用いて接続を確立する.
- 使用可能なソケットアドレス
-
{host,port} ホスト名あるいはIPアドレスとポート番号 {host,"service"} ホスト名あるいはIPアドレスとサービス名 "host:port" ホスト名あるいはポートのあるIPアドレス port ローカルソケットローカルホスト:port URL["url"] あるいは "url" 完全なURL(例:http://www.wolfram.com) - サービス名は,接続先のポートを決定するために使用される.このため,オペレーティングシステムのサービス名データベースが使用される.サービス名は,Webソケット接続に対応して"wss"または"ws"とすることもできる.
- ホスト名は"www.wolfram.com"のような形式である.
- IPアドレスの形式のホスト名は,"140.177.0.0"あるいはIPAddress[string]として与えることができる.ただし,string はIPv4またはIPv6のIPアドレスである.
- アドレスがポート番号指定がないURLとして与えられる場合は,ポート番号がURLスキームから推定される(例:HTTPに対してポート80).
- SocketConnect[SocketObject[…]]を使って,SocketOpenによって開かれたローカルソケットに接続できる.
- サポートされるプロトコル
-
"TCP" 生のTCPストリームプロトコル "ZMQ" ZeroMQ1対1対応メッセージプロトコル {"ZMQ","type"} 指定タイプのZeroMQプトロコル "WSS" 安全なWebSocketプロトコル "WS" WebSocketプロトコル - WebSocketプロトコルが使用される場合,address はHTTPRequestオブジェクトでよい.
- URLにWebSocketスキーム("wss://"または"ws://")が含まれている場合,SocketConnectは WebSocket プロトコルを選択する.
- 以下は,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"ソケットである.
- SocketConnectによって開かれた接続をCloseまたはDeleteObjectを使って閉じることができる.
例題
すべて開く すべて閉じる例 (3)
socket = SocketConnect["http://exampledata.wolfram.com"]WriteString[socket, "GET /50states.txt HTTP/1.0
"]result = ByteArrayToString[SocketReadMessage[socket]];Snippet[result]Close[socket]server = SocketOpen[Automatic, "ZMQ"]client = SocketConnect[server]WriteString[server, "hello world"]message = SocketReadMessage[client]ByteArrayを文字列に変換する:
ByteArrayToString[message]Close /@ {server, client}echoServer = SocketConnect["wss://echo.websocket.org"]SocketReadMessage[echoServer]SocketWriteMessage[echoServer, StringToByteArray["test string"]];
message = SocketReadMessage[echoServer];
ByteArrayToString[message["DataByteArray"]]スコープ (1)
server = SocketOpen[Automatic, "ZMQ"]ipaddress = server["DestinationIPAddress"]
port = server["DestinationPort"]client = SocketConnect[{ipaddress, port}, "ZMQ"]Write[server, Graphics[{Orange, Disk[]}]]Read[client]Do[Write[server, Graphics[{RandomColor[], Disk[]}]], 10]ReadList[client, Expression, 10]Close /@ {server, client}アプリケーション (1)
この例は,単一のサーバがメッセージを送信して複数のクライアントがこのメッセージを受信するZMQ出版購読型モデルの使い方を示す.話を簡単にするために,この例では送信者(出版側)と複数の受信者(購読側)を同じWolfram Engineのプロセスで動かしている.一般的には,送信者と受信者は異なるプロセスおよび/または異なるマシンで実行されている.
publisher = SocketOpen["tcp://127.0.0.1:5858", {"ZMQ", "PUB"}]subscribers = Table[SocketConnect["tcp://127.0.0.1:5858", {"ZMQ", "SUB"}], 4];すべての受信者がすべてのメッセージを確実に受信するようにする:
Scan[SetOptions[#, "ZMQ_SUBSCRIBE" -> All]&, subscribers]まだメッセージは送信されておらず,受信者はメッセージを読む用意ができていない:
SocketReadyQ /@ subscribersWriteString[publisher, "hello"]SocketReadyQ /@ subscribersmessages = SocketReadMessage /@ subscribersByteArrayToString /@ messagesClose[publisher];
Scan[Close, subscribers];考えられる問題 (3)
ReadStringはサーバによってソケットが閉じられるのを待ってデータを返すので,ReadStringはTCPソケットにしか使うことができない.ZMQはサーバによって閉じられることはなく,無期限にブロックする.
server = SocketOpen[Automatic, "ZMQ"];
client = SocketConnect[server];WriteString[server, "hello"];
Close[server];ReadStringは無期限にブロックするようになった:
TimeConstrained[ReadString[client], 5]Close[client]SocketOpenが開いたTCPサーバソケットを使うときは,ReadStringが返される前に接続を閉じなければならない.
server = SocketOpen[Automatic, "TCP"];
client = SocketConnect[server];リモートクライアントにメッセージを書き込み,サーバを閉じる:
remoteClient = First[server["ConnectedClients"]];
WriteString[remoteClient, "hello"];ReadStringは,ソケットがまだ閉じられていないので無期限にブロックするようになった:
TimeConstrained[ReadString[client], 5]リモートソケットを閉じるとReadStringが強制的に返される:
Close[remoteClient];
ReadString[client]Close /@ {client, server}HTTPRequestを使用する場合,それは整形式でWebソケット接続を確立するのに適切でなければならない.
SocketConnect[HTTPRequest["wss://echo.websocket.org", <|"Method" -> "POST"|>]]非Webソケットのサービス名は,Webソケット接続では使用できない:
SocketConnect["ftp://echo.websocket.org", "WSS"]SocketConnect["wss://google.com"]関連するガイド
-
▪
- 外部言語インターフェース ▪
- ネットワークプログラミング ▪
- 接続デバイスの使用 ▪
- HTTPの要求と応答
関連リンク
テキスト
Wolfram Research (2015), SocketConnect, Wolfram言語関数, https://reference.wolfram.com/language/ref/SocketConnect.html (2026年に更新).
CMS
Wolfram Language. 2015. "SocketConnect." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2026. 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_2026_socketconnect, author="Wolfram Research", title="{SocketConnect}", year="2026", howpublished="\url{https://reference.wolfram.com/language/ref/SocketConnect.html}", note=[Accessed: 12-October-2026]}
BibLaTeX
@online{reference.wolfram_2026_socketconnect, organization={Wolfram Research}, title={SocketConnect}, year={2026}, url={https://reference.wolfram.com/language/ref/SocketConnect.html}, note=[Accessed: 12-October-2026]}