How can I open TCP/IP server in MATLAB 2020b?

16 vues (au cours des 30 derniers jours)
Nuri Basar
Nuri Basar le 23 Fév 2023
Commenté : Niels le 30 Mai 2024
In MATLAB 2020B , tcpserver() function is not defined. tcpip() function give error sometimes. So, How can I open TCP/IP server in MATLAB 2020b?

Réponses (1)

Rajeev
Rajeev le 24 Fév 2023
You can create a TCP/IP server using the 'java.net.ServerSocket' class in MATLAB.
% Define the port number for the server
port = 1234;
% Create a Java ServerSocket object
serverSocket = java.net.ServerSocket(port);
% Wait for a client to connect
fprintf('Waiting for client to connect...\n');
clientSocket = serverSocket.accept();
fprintf('Client connected\n');
% Open a data input stream to receive messages from the client
inputStream = clientSocket.getInputStream();
% Open a data output stream to send messages to the client
outputStream = clientSocket.getOutputStream();
% Loop to receive and send messages
while true
% Receive a message from the client
data = uint8([]);
while inputStream.available() > 0
data = [data, inputStream.read()];
end
if ~isempty(data)
fprintf('Received message: %s\n', charAur(data));
% Send a response to the client
response = 'Message received';
outputStream.write(uint8(response));
outputStream.flush();
fprintf('Sent response: %s\n', response);
end
end
% Close the streams and socket when done
inputStream.close();
outputStream.close();
clientSocket.close();
serverSocket.close();
This code creates a TCP/IP server on port 1234 and waits for a client to connect.
Once a client connects, the server opens a data input stream to receive messages and a data output stream to send messages. It then enters a loop to receive and send messages.
To receive messages, it checks the input stream for available data and reads it into a buffer. To send messages, it writes a response to the output stream and flushes it to ensure it is sent immediately.
The loop continues until the server is stopped manually. When done, the streams and socket are closed.
To connect to the server that was opened by the code above, you can use the tcpip() function in MATLAB to create a TCP/IP client and connect to the server. Here's an example code:
% Define the server host name and port number
host = 'localhost';
port = 1234;
% Create a TCP/IP client object and connect to the server
client = tcpip(host, port);
fopen(client);
% Send a message to the server
message = 'Hello, server';
fwrite(client, message);
% Wait for a response from the server
while client.BytesAvailable == 0
% Wait for data to be available
end
response = fread(client, client.BytesAvailable);
% Display the response from the server
fprintf('Server response: %s\n', char(response'));
% Close the client connection
fclose(client);
  1 commentaire
Niels
Niels le 30 Mai 2024
Thanks Rajeev. I spent 10min google and finallyb thsi answer is the onli one that works whehn usin Matlab online. I dont know why they removed tcpserver from matlab online.. really annoying!

Connectez-vous pour commenter.

Produits


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by