From ripley at stats.ox.ac.uk  Tue Jun 25 18:12:40 2013
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Tue, 25 Jun 2013 17:12:40 +0100
Subject: [Rd] [R] How can C++ read the R object written into socket with
 saveRDS or save
In-Reply-To: <OF396F33FA.8A573204-ON48257B95.0055E30F-48257B95.00573B1B@cn.ibm.com>
References: <OF396F33FA.8A573204-ON48257B95.0055E30F-48257B95.00573B1B@cn.ibm.com>
Message-ID: <51C9C178.6000903@stats.ox.ac.uk>

On 25/06/2013 16:52, Rong lI Li wrote:
>
> Hi, all,
>
> Recently, I met one issue when using socket between R & C++ to transmit R
> object. Would you pls help give me some suggestions? Many thanks!

R-help was really the wrong list: see the posting guide. And multiple 
posting is really discouraged.

But see package 'parallel' which has lots of examples of doing this.

> [Background]:
> I create a socket connection between R & C++ binary first, and then, want
> to use saveRDS() or save() in R to save the object into connection
> directly. So that the C++ binary can read the object, and send it to
> another remote R.
>
> [What I did so far]:
> 1. I used socketConnection in R and listen/accept in C++, to establish one
> blocking socket.
> 2. I used saveRDS to save the R object into socket directly
> 3. I want to use "recv()" in C++ to receive the R object.
>
> [Issues I met]:
> I found actually, the saveRDS writes the R object with XDR format. I could

It may do ... depending how you call it.  You may prefer to serialize() 
to a raw vector whose size you can find, and transmit that.

> not know how many bytes are sent into socket, when calling saveRDS to save
> R object. So in the C++ binary, I could not know exactly how many bytes I
> should receive from the socket. It is not safe for me, to always use a
> pre-defined buffer size to read from the socket.
>
> Any suggestions for this? Are there safe way for me to read the R object
> from the socket?
> I do not do any conversion with the received data, and only need to
> transfer them into a remote R to do the function execution.
>
> =====================
>
> Rong "Jessica", Li (????)
> Platform Symphony TET, CSTL, IBM Systems &Technology Group, Development
> Tel:86-10-82451010  Email:ronglli at cn.ibm.com
> 	[[alternative HTML version deleted]]

You were asked not to send HTML.

> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>


-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



[Rd] [R] How can C++ read the R object written into socket with saveRDS or save
Prof Brian Ripley