On Jun 25, 2013, at 11:52 AM, 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! > > [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 > 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?
There is nothing preventing you from adding a frame with the size of the serialization - that is what Rserve does (mentioned earlier by Dirk - it even has a C++ client ...): it uses a fixed-size header that specifies the kind of payload and its length, then the serialization follows in the payload. That way you only need to read a fixed header. Cheers, Simon > 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:rong...@cn.ibm.com > [[alternative HTML version deleted]] > > ______________________________________________ > r-de...@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-help@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.