11

私はソケット接続に関しては完全な初心者であり、Rでそれらを使用する方法を学ぼうとしています.「接続」のRドキュメントの例に従おうとしています.

ただし、Rstudio (R 3.0 を実行) で次のコマンドを実行すると:

con1 <- socketConnection(port = 6011, server = TRUE)

アプリケーションは無限ループに入り、そこから抜け出すには停止ボタンを押す必要があります。結果として、例の次の行に進むことができません

writeLines(LETTERS, con1)
close(con1)

誰かが私が間違っていることに光を当てることができますか?

4

2 に答える 2

7

実行しようとしている例には、2 つの R プロセスが必要です。表示されているコードは、別のプロセスが同じポートを指定して接続するまで (ご覧のとおり) ブロックされます。

con2 <- socketConnection(Sys.info()["nodename"], port = 6011)

このコードを機能させるには、最初のプロセスと同じマシンで実行する必要があることに注意してください。そうしないと、エラーがスローされます。2 番目のプロセスが実行されると、最初のプロセスはブロックを解除し、オブジェクトを返しsocketConnectionます。次に、2 番目のプロセスが読み取ることができるデータを書き込むことができます。

socketConnectionを実行しても、 man ページの例は実行されないことに注意してくださいexample(socketConnection)。そうであれば、ご覧のように R セッションがハングします。

于 2013-05-24T11:23:04.403 に答える