В этом примере показано, как настроить эхо-сервер и взаимодействовать с ним с помощью TCP/IP путем создания tcpclient объект. Двоичные данные и завершенные строковые данные отправляются на сервер, и сервер передает те же данные обратно клиенту.
Создайте эхо-сервер TCP/IP на порту 4500.
echotcpip("on",4500);Создать tcpclient и подключиться к серверу. Укажите удаленный хост как "localhost" для подключения к эхо-серверу. Укажите тот же номер удаленного порта, который использовался для эхо-сервера.
t = tcpclient("localhost",4500)t =
tcpclient with properties:
Address: 'localhost'
Port: 4500
NumBytesAvailable: 0
Show all properties, functions
Создание функции обратного вызова с именем readDataFcn считывать данные каждый раз, когда доступны указанные байты данных. Сохранить считанные данные в UserData имущество tcpclient объект. См. раздел readDataFcn в конце этого примера.
Установите функцию обратного вызова для запуска при каждом получении 10 байт данных.
configureCallback(t,"byte",10,@readDataFcn);Отправьте 10 байт данных на эхо-сервер.
sendData = 1:10;
write(t,sendData,"uint8");Эхо-сервер отправляет двоичные данные обратно клиенту TCP/IP.
Приостановка на 1 секунду для разрешения функции обратного вызова readDataFcn для завершения его работы.
pause(1);
Чтение двоичных данных, сохраненных в UserData свойство и отобразить его.
data = t.UserData
data = 1×10 uint8 row vector
1 2 3 4 5 6 7 8 9 10
Эти данные соответствуют данным, записанным на эхо-сервер.
Создание функции обратного вызова с именем readASCIIFcn считывать данные каждый раз, когда в данных обнаруживается признак конца. Сохранить считанные данные в UserData имущество tcpclient объект. См. раздел readASCIIFcn в конце этого примера.
Установите функцию обратного вызова для считывания завершенных строковых данных. Обратный вызов запускается при получении терминатора в данных.
configureCallback(t,"terminator",@readASCIIFcn);Установите Terminator значение свойства для "LF".
configureTerminator(t,"LF");Отправка строковых данных на эхо-сервер с помощью writeline. Символ терминатора "LF" автоматически добавляется к этим строковым данным.
writeline(t,"Echo this string.");Эхо-сервер отправляет ASCII-данные обратно клиенту TCP/IP.
Приостановка на 1 секунду для разрешения функции обратного вызова readASCIIFcn для завершения его работы.
pause(1);
Считывание данных ASCII, хранящихся в UserData свойство и отобразить его.
textData = t.UserData
textData = "Echo this string."
Эти данные соответствуют данным, записанным на эхо-сервер.
Остановите эхо-сервер и очистите tcpclient объект.
echotcpip("off"); clear t
Эта функция вызывает read читать BytesAvailableFcnCount количество байтов данных. Эти данные воспроизводятся сервером.
function readDataFcn(src, ~) src.UserData = read(src,src.BytesAvailableFcnCount,"uint8"); end
Эта функция вызывает readline для считывания данных ASCII, первоначально отправленных tcpclient объект. Данные воспроизводятся сервером.
function readASCIIFcn(src, ~) src.UserData = readline(src); end