我正在嘗試將文本發送到服務器與R端口一起偵聽TCP端口,然後從服務器讀取響應文本。 很瑣碎的,即,在BASH爲服務器監聽端口12345,那就是:與TCP套接字(服務器)通信
> echo "text" | nc localhost 12345
response
服務器保持運行,並且可以在此之後再次查詢任意時間。 但是,如果我使用socketConnection從R中嘗試同樣的事情,我要麼永遠不會得到響應,要麼就是打印並且不捕獲它。 我曾嘗試以下:
con <- socketConnection(port=12345)
con <- socketConnection(port=12345, blocking=TRUE, timeout=2)
writeLines("text", con) # server does not receive a thing
flush(con) # has no effect
readLines(con) # still, nothing happens and gets nothing back
close(con) # server confirms receipt, but I no longer can get the result...
服務器只關閉連接後接收到數據,所以沒有什麼可以讀取
con <- pipe("nc localhost 12345")
writeLines("text", con)
現在,「結果」被打印到stdout,所以我不能捕捉它... 如果使用包含「文本」的臨時文件:
res <- readLines(pipe("nc localhost 12345 < tempfile"))
這一工程,但需要一箇中間的臨時文件。 如何讓服務器通信在R中工作,以便我可以寫入然後從同一個連接讀取?
請問socketConnection上的例子是否可以解決任何問題,例如,R進程2使用'isIncomplete()',也許在帶有'writeLines(「text」,con2)的readLines之前' – 2014-09-19 16:16:37
不,我不想兩個R進程之間的通信;他們在那裏做的是等待「服務器」上的傳入數據。我的問題是首先發送:R似乎沒有發送我的請求,直到我手動關閉連接來刷新它。 – fnl 2014-09-19 18:19:03