tcpclient

Создайте клиентское соединение TCP/IP с TCP/IP сервером

Описание

A tcpclient объект представляет соединение с удаленным хостом и удаленным портом из MATLAB® для чтения и записи данных. Удаленный хост может быть сервером или оборудованием, поддерживающим коммуникацию TCP/IP, и должен уже существовать. The tcpclient объект всегда является клиентом и не может использоваться как сервер. Дополнительные сведения о создании сервера TCP/IP см. в разделе Коммуникация с использованием сокетов сервера TCP/IP.

Создание

Описание

пример

t = tcpclient(address,port) создает клиент TCP/IP, который соединяется с сервером, сопоставленным с удаленным узлом address и удаленный порт port. Значение address может быть либо имя удаленного хоста, либо IP-адрес удаленного хоста. Значение port должно быть числом от 1 до 65535. Область входа address устанавливает Address свойство и входной port устанавливает Port свойство.

Если вы указали недопустимый адрес или порт, TCP/IP-сервер не работает, или подключение к серверу не может быть установлено, тогда объект не создается и MATLAB выдает ошибку.

пример

t = tcpclient(address,port,Name,Value) создает соединение и устанавливает дополнительные свойства с помощью одного или нескольких аргументов пары "имя-значение". Установите Timeout и ConnectTimeout свойства с использованием аргументов пары "имя-значение". Заключайте каждое имя свойства в кавычки с последующим значением свойства.

Пример: t = tcpclient("144.212.130.17",80,"Timeout",20,"ConnectTimeout",30) создает соединение клиента TCP/IP с сервером TCP/IP на порте 80 по IP-адресу 44.212.130.17. Он устанавливает период тайм-аута 20 секунд, а тайм-аут подключения 30 секунд.

Свойства

расширить все

Свойства создания объектов

Имя удаленного хоста или IP-адрес, заданный как вектор символов или строковый скаляр. Это свойство может быть задано только при создании объекта.

Пример: t = tcpclient("www.mathworks.com",80) создает клиентское соединение TCP/IP к порту 80 по адресу www.mathworks.com.

Пример: t = tcpclient("144.212.130.17",80) создает соединение клиента TCP/IP с сервером TCP/IP на порте 80 по IP-адресу 144.212.130.17.

Типы данных: char | string

Порт удаленного хоста, заданный как число от 1 до 65535 включительно. Это свойство может быть задано только при создании объекта.

Пример: t = tcpclient("www.mathworks.com",80) создает клиентское соединение TCP/IP к порту 4012 в www.mathworks.com.

Типы данных: double

Допустимое время в секундах для завершения операций чтения и записи, заданное в виде числового значения. Установите это свойство при создании объекта с помощью аргумента пары "имя-значение". Вы также можете изменить его после создания объекта с помощью записи через точку.

Пример: t = tcpclient("144.212.130.17",80,"Timeout",20) устанавливает период ожидания чтения/записи равным 20 секундам.

Типы данных: double

Допустимое время в секундах для подключения к удаленному узлу, заданное в виде числового значения. Это свойство задает максимальное время ожидания успешного или непрохождения запроса на подключение к указанному удаленному узлу. Это свойство может быть задано только при создании объекта.

Пример: t = tcpclient("144.212.130.17",80,"ConnectTimeout", 30) устанавливает тайм-аут соединения на 30 секунд.

Типы данных: double

Чтение и запись свойств

Это свойство доступно только для чтения.

Количество байтов, доступных для чтения, возвращаемое в виде числового значения.

Пример: t.NumBytesAvailable возвращает количество байтов, доступных для чтения.

Типы данных: double

Это свойство доступно только для чтения.

Общее количество байтов, записанных на удаленный хост, возвращенных в виде числового значения.

Пример: t.NumBytesWritten возвращает количество записанных байтов.

Типы данных: double

Последовательный порядок, в котором байты упорядочены в большие числовые значения, заданные как "little-endian" или "big-endian".

Пример: t.ByteOrder = "little-endian" устанавливает порядок байтов на little-endian.

Типы данных: char | string

Terminator символа для чтения и записи данных, оконечных по ASCII, возвращается как "LF", "CR", "CR/LF"или число от 0 до 255 включительно. Если терминаторы строки чтения и записи отличаются, Terminator возвращается как массив ячеек 1x2 из этих значений. Установите это свойство с configureTerminator функция.

Пример: configureTerminator(t,"CR") устанавливает и чтение, и запись терминаторов строки равной "CR".

Пример: configureTerminator(t,"CR",10) устанавливает терминатор строки считывания равным "CR" и терминатор строки записи в 10.

Типы данных: double | char | string

Свойства коллбэка

Доступный режим триггера коллбэка в байтах, возвращается следующим "off", "byte", или "terminator". Этот параметр определяет, отключен ли коллбэк, вызванный количеством байтов, заданным BytesAvailableFcnCount, или инициируется терминатором строки, заданным как Terminator. Установите это свойство с configureCallback функция.

Пример: configureCallback(t,"byte",50,@callbackFcn) устанавливает callbackFcn коллбэк, чтобы инициировать каждый раз, когда доступно 50 байт новых данных для чтения.

Пример: configureCallback(t,"terminator",@callbackFcn) устанавливает callbackFcn Коллбэк для запуска, когда терминатор строки доступен для чтения.

Пример: configureCallback(dev,"off") отключает коллбэки.

Типы данных: char | string

Количество байтов данных для запуска коллбэков, заданное как BytesAvailableFcn, вернулся в качестве дубля. Это значение используется только когда BytesAvailableFcnMode свойство "byte". Установите эти свойства с configureCallback функция.

Пример: configureCallback(t,"byte",50,@callbackFcn) устанавливает callbackFcn коллбэк, чтобы инициировать каждый раз, когда доступно 50 байт новых данных для чтения.

Типы данных: double

Функция обратного вызова, инициируемая событием, доступным в байтах, возвращаемая как указатель на функцию. Событие, доступное в байтах, генерируется путем приема определенного количества байтов или терминатора строки. Это свойство пустое, пока вы не назначите указатель на функцию. Установите это свойство с configureCallback функция.

Пример: configureCallback(t,"byte",50,@callbackFcn) устанавливает callbackFcn коллбэк, чтобы инициировать каждый раз, когда доступно 50 байт новых данных для чтения.

Типы данных: function_handle

Функция обратного вызова, вызванная событием ошибки, возвращается как указатель на функцию. Событие ошибки генерируется, когда возникает асинхронная ошибка чтения или записи. Это свойство пустое, пока вы не назначите указатель на функцию.

Пример: t.ErrorOccurredFcn = @myErrorFcn

Типы данных: function_handle

Свойство общего назначения для пользовательских данных, возвращаемое как любой тип данных MATLAB. Для примера можно использовать это свойство для хранения данных, когда событие запускается из функции обратного вызова.

Пример: t.UserData

Функции объекта

readЧтение данных с удаленного хоста по TCP/IP
readlineСчитывайте линию строковых данных ASCII с удаленного хоста по TCP/IP
readbinblockСчитайте один бинблок данных с удаленного хоста по TCP/IP
writeЗапись данных на удаленный хост через TCP/IP
writelineЗапись линии данных ASCII на удаленный хост по протоколу TCP/IP
writebinblockЗапись одного бинблока данных на удаленный хост по протоколу TCP/IP
writereadНапишите команду на удаленный хост по TCP/IP и считайте ответ
configureTerminatorУстановите терминатор строки для обмена строками ASCII с удаленным хостом по TCP/IP
configureCallbackУстановите функцию обратного вызова и условие триггера для связи с удаленным хостом по TCP/IP
flushОчистить буферы для связи с удаленным хостом по TCP/IP

Примеры

свернуть все

Создайте объект TCP/IP t использование показанного адреса хоста и порта 80.

t = tcpclient("www.mathworks.com",80)
t = 
  tcpclient with properties:

              Address: 'www.mathworks.com'
                 Port: 80
    NumBytesAvailable: 0

  Show all properties, functions

Когда вы соединяетесь с помощью имени хоста, такого как указанный веб-адрес или 'localhost', IP-адрес по умолчанию имеет IPv6 формат. Если сервер, к которому вы подключаетесь, ожидает IPv4 формата, подключение прекращает работать. Для IPv4 можно создать соединение, указав явный IP-адрес, а не имя хоста.

Создайте клиентское соединение TCP/IP, вызываемое t использование показанного IP-адреса и порта 80.

t = tcpclient("144.212.130.17",80)
t = 
  tcpclient with properties:

              Address: '144.212.130.17'
                 Port: 80
    NumBytesAvailable: 0

  Show all properties, functions

Создайте клиентское соединение TCP/IP, вызываемое t и установите период тайм-аута 20 секунд.

t = tcpclient("144.212.130.17",80,"Timeout",20)
t = 
  tcpclient with properties:

              Address: '144.212.130.17'
                 Port: 80
    NumBytesAvailable: 0

  Show all properties, functions

ans = 20

Смотрите значение Timeout.

t.Timeout

Этот выход отражает изменение свойства.

Создайте клиентское соединение TCP/IP, вызываемое t и установите ConnectTimeout свойство до 30 секунд.

t = tcpclient("144.212.130.17",80,"ConnectTimeout",30)
t = 
  tcpclient with properties:

              Address: '144.212.130.17'
                 Port: 80
    NumBytesAvailable: 0

  Show all properties, functions

Смотрите значение ConnectTimeout.

t.ConnectTimeout
ans = 30

Этот выход отражает изменение свойства.

Создайте клиентское соединение TCP/IP, вызываемое t, подключение к эхо-серверу TCP/IP с портом 4000. Для этого у вас должен быть echotcpip сервер, работающий на порте 4000.

echotcpip("on",4000)
t = tcpclient("localhost",4000)
t = 
  tcpclient with properties:

              Address: 'localhost'
                 Port: 4000
    NumBytesAvailable: 0

  Show all properties, functions

The write функция синхронно записывает данные на удаленный хост, подключенный к t. Сначала укажите данные, а затем запишите данные. Функция приостанавливает выполнение MATLAB до тех пор, пока указанное количество значений не будет записано на удаленный хост.

Присвоение 10 байтов uint8 данные к переменной data.

data = uint8(1:10)
data = 1×10 uint8 row vector

    1    2    3    4    5    6    7    8    9   10

Просмотрите данные.

whos data
  Name      Size            Bytes  Class    Attributes

  data      1x10               10  uint8              

Запись данных на эхо-сервер.

write(t,data)

Подтвердите успех операции записи путем просмотра NumBytesAvailable свойство.

t.NumBytesAvailable
ans = 10

Поскольку клиент подключен к эхо-серверу, данные, которые вы записываете на сервер, возвращаются клиенту. Считайте все байты доступных данных.

read(t)
ans = 1×10 uint8 row vector

    1    2    3    4    5    6    7    8    9   10

Использование read функция без аргументов считывает все доступные байты данных из t подключено к удаленному хосту и возвращает данные. Количество считанных значений определяется NumBytesAvailable свойство, которое является количеством байтов, доступным в вход буфере.

Закройте соединение между TCP/IP-клиентом и удаленным узлом путем очистки объекта. Выключите echotcpip сервер.

clear t
echotcpip("off")

Расширенные возможности

.
Введенный в R2014b