В этом примере показано, как настроить сервер эха и связаться с ним с помощью 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