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