You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

66 lines
1.9 KiB

% CLIENT connect to a server and read a message
%
% Usage - message = client(host, port, number_of_retries)
function message = client(host, port, number_of_retries)
import java.net.Socket
import java.io.*
retry = 0;
input_socket = [];
message = [];
while true
retry = retry + 1;
if ((number_of_retries > 0) && (retry > number_of_retries))
fprintf(1, 'Too many retries\n');
break;
end
try
fprintf(1, 'Retry %d connecting to %s:%d\n', ...
retry, host, port);
% throws if unable to connect
input_socket = Socket(host, port);
% get a buffered data input stream from the socket
input_stream = input_socket.getInputStream;
d_input_stream = DataInputStream(input_stream);
fprintf(1, 'Connected to server\n');
% read data from the socket - wait a short time first
for i=1:20
pause(0.5);
bytes_available = input_stream.available;
%fprintf(1, 'Reading %d bytes\n', bytes_available);
data_reader = DataReader(d_input_stream);
message = data_reader.readBuffer(bytes_available);
message = char(message'); % Data comes out as a column vector
message
end
% data_reader = DataReader(d_input_stream);
% message = data_reader.readBuffer(bytes_available);
%
% message = char(message'); % Data comes out as a column vector
% cleanup
input_socket.close;
break;
catch me
me
if ~isempty(input_socket)
input_socket.close;
end
% pause before retrying
pause(1);
end
end
end