Interface between Python and Matlab using tcpserver

42 views (last 30 days)
I am currently trying to run an instance of matlab as a tcp server using the tcpserver function from the Instrument Control Toolbox. I want a python script that acts as the TCP client to connect to the matlab server, send it commands and get the results back via TCP. Here is a simple example of this connection, as I am trying to implement it:
server = tcpserver('', 1234)
while true
if server.NumBytesAvailable>0
data = read(server, 11, "string")
write(server, "Hello back!")
catch ME
clear server
The code for the Python client is the following:
import socket
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.connect(('', 1234))
print("Connection to server established!")
sock.sendall(b'Hello World')
data = sock.recv(1024)
print('Received', repr(data))
When I run the server and client, although Matlab receives the message from the Python client, I get the following error when it tries to send the answer:
data =
"Hello World"
Error using testserver (line 6)
Failed to write from the server. A TCP/IP client must be connected to the server.
Does anyone know why this happens and if there is a way to work around it?

Answers (1)

Kunal Kandhari
Kunal Kandhari on 20 Jun 2021
Changing matlab code to following will work:
server = tcpserver('', 1234,"ConnectionChangedFcn",@connectionFcn)
function connectionFcn(src, ~)
if src.Connected
data = read(src, 11, "string")
write(src, "Hello back!")
It will not close the connection also infinite clients can connect to this server.
  1 Comment
文韬 王
文韬 王 on 5 Oct 2022
Hello! I have encountered the same problem described above. I have tried your code and it worked well.
But unfortunately I have some special demands since I want to send abundant real-time data through a long-term iteration and embed the whole thing in the appdesigner environment, that is to say, I cannot stand the limited functionality that those data could only be sent when the connection state changes. For more detail, please see
As for my tricky situation, Do you have any other suggestions? Please lend me a hand.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!