如何使用 R 连接两台计算机?

Posted

技术标签:

【中文标题】如何使用 R 连接两台计算机?【英文标题】:How to connect two computers using R? 【发布时间】:2016-03-07 16:48:28 【问题描述】:

是否可以在两台不同计算机上的两个 R 会话之间打开通信流?

如果两者都在同一台计算机上,我会使用套接字来连接会话。我想对于两台不同的计算机,我应该尝试使用网络套接字。 httpuv 支持 R 作为 Web 套接字服务器,但不幸的是,我在 R 中找不到任何支持客户端 Web 套接字的最新包。

我不喜欢使用网络套接字。任何能够在计算机之间进行实时通信的解决方案都可以。

【问题讨论】:

您是否尝试进行任何集群并行计算?有这个包,snow,你可能会感兴趣cran.r-project.org/web/packages/snow/index.html 您要解决的问题是什么?大内存机器上的远程会话?聚类? MPI? 我不是在做集群并行计算,但是在通信概念上可能是相似的。我正在尝试在 R 中构建类似于代理服务器的东西,它从所有客户端获取请求,然后将它们发送给适当的工作人员。我的限制是由于安全原因我无法从工作计算机复制原始数据,而且我无法从外部网络访问工作计算机。因此,我在网络中分配了一台计算机来获取客户端请求,并将它们与相关数据一起发送给相关工作人员。 有趣。您可以尝试两个 R 服务器。一个来自 Rstudio(rstudio.com/products/rstudio-server-pro),另一个来自微软(blog.revolutionanalytics.com/2016/01/microsoft-r-open.html)。不确定代理本身是否可以在 R 中完成 【参考方案1】:

我已经使用sockets 在使用 R 的计算机之间进行通信。

服务器示例:

import socket

server <- function()
  while(TRUE)
    writeLines("Listening...")
    con <- socketConnection(host="localhost", port = 6011, blocking=TRUE,
                            server=TRUE, open="r+")
    data <- readLines(con, 1)
    print(data)
    response <- toupper(data) 
    writeLines(response, con) 
    close(con)
  

server()

客户端示例:

import socket

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(("localhost", 6011))
while 1:
    data = raw_input ( "Enter text to be upper-cased, q to quit\n" )
    client_socket.send(data)
    if ( data == 'q' or data == 'Q'):
        client_socket.close()
        break;
    else:        
        data = client_socket.recv(5000)
        print "Your upper cased text:  " , data

【讨论】:

以上是关于如何使用 R 连接两台计算机?的主要内容,如果未能解决你的问题,请参考以下文章

如何在两台计算机之间传输数据?

在 NAT 后的两台计算机之间建立连接

局域网内的两台计算机如何使用远程桌面?

电脑上如何共享文件

如何使用 Messenger 示例连接两台机器?

如何使用WinDBG跟踪调试ASL/ACPI