Skip to content
/ mexrpc Public

Tiny MATLAB MEX client + server, which allows to call MEX functions remotely

License

Notifications You must be signed in to change notification settings

peay/mexrpc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MEXRPC

This is a small MEX client + server, which allows to call MEX files remotely. This piece of code has flexibility in mind, not performance. In particular, there are no restrictions to input/output arguments (which can be structs, cell arrays, or any valid MATLAB construct). This is achieved through serialization, but requires copies which may incurr a performance overhead when using MEXRPC on large input/output data.

Usage

On the server side,

./mex_server hostname:port path-to-mex-file

This starts a server bound on hostname:port, that will accept requests from the client, call the MEX file with the arguments provided by the client, and send the results back to the client.

On the client side, within MATLAB,

[out1, out2] = mex_client('hostname:port', arg1, arg2);

There are no restrictions on input or output arguments - these can be cells, structs, matrices, sparse arrays, strings, whatever.

Current restrictions: cannot interrupt with Ctrl-C, there is no error reporting (printfs and errors while running the MEX on the server are NOT transfered back to the client, which will only say that the call failed)

Installation

The RPC aspects are based on Cap'n Proto. Install Cap'n Proto:

curl -O https://capnproto.org/capnproto-c++-0.4.1.tar.gz
tar zxf capnproto-c++-0.4.1.tar.gz
cd capnproto-c++-0.4.1
./configure
make -j6 check
sudo make install

To compile, edit Makefile to specify paths to MATLAB and Cap'n Proto, and run

make

When running MATLAB or the server, make sure that library path contains the Cap'n Proto libraries, as well MATLAB libraries:

libmx, libmex, libmat, libeng

and librpc_client (in MEXRPC's folder). See start_server.sh (generated by make) for an example.

About

Tiny MATLAB MEX client + server, which allows to call MEX functions remotely

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published