Передайте двоичный файл и данные о ASCII к серверу эха Используя TCP/IP

В этом примере показано, как настроить сервер эха и связаться с ним с помощью TCP/IP путем создания tcpclient объект. Двоичные данные и отключенные данные о строке отправляются в сервер, и сервер повторяет те же данные назад клиенту.

Настройте Сервер Эха TCP/IP и Клиент

Создайте сервер эха 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

Эти данные совпадают с данными, которые вы записали в сервер эха.

Запишите и данные о ASCII чтения Используя режим коллбэка Терминатора

Создайте функцию обратного вызова под названием 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

Функция обратного вызова, чтобы считать данные о ASCII

Это вызовы функции readline считывать данные о ASCII, первоначально отправленные tcpclient объект. На данные реагирует сервер.

function readASCIIFcn(src, ~)
src.UserData = readline(src);
end