2016-03-07 76 views
4

是否可以在两台不同计算机上的两个R会话之间打开通信流?如何使用R连接两台电脑?

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

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

+0

你试图做任何集群并行计算?有这个软件包,可能会让你感兴趣的“雪”https://cran.r-project.org/web/packages/snow/index.html –

+0

你试图解决什么问题?大内存机器上的远程会话?集群? MPI? –

+0

我没有进行群集并行计算,但它在通信概念上可能相似。我试图在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 
相关问题