Communicate Using TCP/IP Server Sockets

About Server Sockets

Support for Server Sockets is available, using the NetworkRole property on the TCP/IP interface. This support is for a single remote connection. You can use this connection to communicate between a client and MATLAB®, or between two instances of MATLAB.

For example, you might collect data such as a waveform into one instance of MATLAB, and then want to transfer it to another instance of MATLAB.

Note

The use of the server socket on either the client or server side should be done in accordance with the license agreement as it relates to your particular license option and activation type. If you have questions, you should consult with the administrator for your license or your legal department.

This is intended for use behind a firewall on a private network.

Note that while a server socket is waiting for a connection after calling fopen, the MATLAB processing thread is blocked. To stop fopen or to stop listening for connections, and restore the use of MATLAB, type Ctrl+C at the MATLAB command line.

Example

To use this feature it is necessary to set the NetworkRole property in the tcpip interface. It uses two values, client and server, to establish a connection as the client or the server. The server sockets feature supports binary and ASCII transfers.

The following example shows how to connect two MATLAB sessions on the same computer, showing the example code for each session. To use two different computers, replace 'localhost' with the IP address of the server in the code for Session 2. Using '0.0.0.0' as the IP address means that the server will accept the first machine that tries to connect. To restrict the connections that will be accepted, replace '0.0.0.0' with the address of the client in the code for Session 1.

Session 1: MATLAB Server

Accept a connection from any machine on port 30000.

t = tcpip('0.0.0.0', 30000, 'NetworkRole', 'server');

Open a connection. This will not return until a connection is received.

fopen(t);

Read the waveform and confirm it visually by plotting it.

data = fread(t, t.BytesAvailable);
plot(data);

Session 2: MATLAB Client

This code is running on a second copy of MATLAB.

Create a waveform and visualize it.

data = sin(1:64);
plot(data);

Create a client interface and open it.

t = tcpip('localhost', 30000, 'NetworkRole', 'client');
fopen(t)

Write the waveform to the server session.

fwrite(t, data)