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

16 次查看(过去 30 天)
In MATLAB 2020B , tcpserver() function is not defined. tcpip() function give error sometimes. So, How can I open TCP/IP server in MATLAB 2020b?

回答(1 个)

Rajeev
Rajeev 2023-2-24
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 个评论
Niels
Niels 2024-5-30
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!

请先登录,再进行评论。

产品


版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by