exponenta event banner

tcpserver

Создание сервера TCP/IP

    Описание

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

    Создание

    Описание

    пример

    t = tcpserver(address,port) создает сервер TCP/IP, который прослушивает запрос на подключение клиента TCP/IP по IP-адресу, указанному address и номер порта, указанный port.

    Входной аргумент address устанавливает ServerAddress свойство и входной аргумент port устанавливает ServerPort собственность.

    пример

    t = tcpserver(port) создает сервер TCP/IP, который прослушивает запрос на подключение клиента по номеру порта port и IP-адрес "::". Этот IP-адрес указывает, что сервер принимает подключение клиента с любого действительного IP-адреса на компьютере.

    пример

    t = tcpserver(___,Name,Value) создает сервер TCP/IP и задает дополнительные свойства, используя один или несколько аргументов пары имя-значение. Установите Timeout, ByteOrder, и ConnectionChangedFcn с использованием аргументов пары имя-значение. После любой комбинации входных аргументов в предыдущих синтаксисах заключите каждое имя свойства в кавычки с последующим значением свойства.

    Например, t = tcpserver(4000,"Timeout",20,"ByteOrder","big-endian") создает сервер TCP/IP, который прослушивает подключения к порту 4000 по IP-адресу "::". Он устанавливает период тайм-аута 20 секунд, а порядок байтов - big-endian.

    Свойства

    развернуть все

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

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

    Пример: t = tcpserver("144.212.100.10",4000) прослушивает подключения через порт 4000 и IP-адрес 144.212.100.10.

    Примечание

    Если при создании объекта указано имя хоста, tcpserver разрешает его в адрес IPV4 или IPV6 и устанавливает ServerAddress на разрешенный IP-адрес.

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

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

    Пример: t = tcpserver("144.212.100.10",4000) прослушивает подключения через порт 4000 и IP-адрес 144.212.100.10.

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

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

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

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

    Последовательный порядок, в котором байты упорядочены в большие числовые значения, указанные как "little-endian" или "big-endian". Это относится только к следующим числовым типам данных: uint16, int16, uint32, int32, uint64, int64, single, и double. Задайте это свойство при создании объекта с помощью аргумента пары имя-значение. Его также можно изменить после создания объекта с помощью точечной нотации.

    Пример: t = tcpserver("144.212.100.10",4000,"ByteOrder","big-endian") устанавливает порядок байтов big-endian.

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

    Функция обратного вызова, инициируемая событием соединения или разъединения, указанная как дескриптор функции. Событие подключения или отключения возникает, когда клиент TCP/IP подключается к серверу или отключается от него. Задайте это свойство при создании объекта с помощью аргумента пары имя-значение. Его также можно изменить после создания объекта с помощью точечной нотации. Это свойство остается пустым до тех пор, пока не будет назначен дескриптор функции.

    Пример: t = tcpserver("144.212.100.10",4000,"ConnectionChangedFcn",@myConnectionFcn) устанавливает функцию обратного вызова соединения в myConnectionFcn. Когда клиент подключается или отключается, myConnectionFcn триггеры.

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

    Свойства подключения

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

    Состояние подключения к серверу, возвращенное как числовое или логическое 1 (true) или 0 (false). Если это свойство имеет значение trueклиент TCP/IP подключен к серверу.

    Одновременно можно подключиться только к одному клиенту. Если клиент отключается от сервера, можно немедленно подключиться к другому клиенту.

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

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

    IP-адрес подключенного клиента, возвращенный в виде строки. Значение этого свойства соответствует IP-адресу клиента. Значение этого свойства является пустым до тех пор, пока клиент TCP/IP не установит соединение с сервером. Если клиент отключается от сервера, значение этого свойства становится пустым.

    Пример: t.ClientAddress возвращает IP-адрес подключенного клиента.

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

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

    Номер порта подключенного клиента, возвращенный как двойной. Значение этого свойства является пустым до тех пор, пока клиент TCP/IP не установит соединение с сервером.

    Пример: t.ClientPort возвращает номер порта подключенного клиента.

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

    Свойства чтения и записи

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

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

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

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

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

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

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

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

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

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

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

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

    Свойства обратного вызова

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

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

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

    Пример: configureCallback(t,"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Считывание одной binblock данных, отправленных на сервер TCP/IP
    writeЗапись данных с сервера TCP/IP
    writelineЗапись строки данных ASCII с сервера TCP/IP
    writebinblockЗапись одной двоичной блокировки данных с сервера TCP/IP
    configureTerminatorУстановка терминатора для связи строки ASCII
    configureCallbackУстановка функции обратного вызова и условия запуска для связи
    flushОчистить буферы для связи с помощью сервера TCP/IP

    Примеры

    свернуть все

    Создание сервера TCP/IP с именем t прослушивает подключения по IP-адресу компьютера и порту 4000. Ваш IP-адрес отличается от IP-адреса в этом примере. Он должен быть любым допустимым адресом IPV4, адресом IPV6 или именем узла адаптера на компьютере.

    t = tcpserver("172.28.200.145",4000)
    t = 
      TCPServer with properties:
    
            ServerAddress: "172.28.200.145"
               ServerPort: 4000
                Connected: 0
            ClientAddress: ""
               ClientPort: []
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    

    Значения Connected, ClientAddress, и ClientPort свойства указывают, что клиент TCP/IP не подключен к серверу.

    Создание сервера TCP/IP с именем t прослушивает подключения по всем IP-адресам и порту 4000.

    t = tcpserver(4000)
    t = 
      TCPServer with properties:
    
            ServerAddress: "::"
               ServerPort: 4000
                Connected: 0
            ClientAddress: ""
               ClientPort: []
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    

    Значения Connected, ClientAddress, и ClientPort свойства указывают, что клиент TCP/IP не подключен к серверу.

    Создание сервера TCP/IP с именем t и установите время ожидания чтения и записи равным 20 секундам.

    t = tcpserver(4000,"Timeout",20)
    t = 
      TCPServer with properties:
    
            ServerAddress: "::"
               ServerPort: 4000
                Connected: 0
            ClientAddress: ""
               ClientPort: []
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    

    Отображение значения Timeout.

    t.Timeout
    ans = 20
    

    Выходные данные показывают указанное значение тайм-аута, указывающее, что t ожидает до 20 секунд для завершения операции чтения или записи.

    Создание функции обратного вызова с именем connectionFcn и сохранить его как .m в текущей рабочей папке. При вызове этой функции обратного вызова в окне команд MATLAB отображается сообщение, указывающее на соединение или разъединение. Этот код можно изменить для выполнения операций чтения или записи на сервере TCP/IP вместо отображения сообщения.

    function connectionFcn(src,~)
    if src.Connected
       disp("This message is sent by the server after accepting the client connection request.")
    else
       disp("Client has disconnected.")
    end
    end
    

    Создайте сервер TCP/IP с именем server и установите ConnectionChangedFcn к дескриптору connectionFcn функция обратного вызова.

    server = tcpserver("localhost",4000,"ConnectionChangedFcn",@connectionFcn)
    server = 
      TCPServer with properties:
    
            ServerAddress: "127.0.0.1"
               ServerPort: 4000
                Connected: 0
            ClientAddress: ""
               ClientPort: []
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    

    Создание клиента TCP/IP с именем client с тем же IP-адресом и номером порта, что и ваш сервер.

    client = tcpclient("localhost",4000)
    client = 
      tcpclient with properties:
    
                  Address: 'localhost'
                     Port: 4000
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    

    This message is sent by the server after accepting the client connection request.

    После создания клиента он подключается к серверу. Это запускает событие подключения для сервера, которое вызывает connectionFcn функция обратного вызова. Функция обратного вызова возвращает сообщение, отображаемое в окне команд.

    Отключите клиент от сервера, очистив его.

    clear client

    Client has disconnected.

    Очистка клиента инициирует событие отключения для сервера и возвращает сообщение от connectionFcn функция обратного вызова.

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

    Создайте сервер TCP/IP, который прослушивает подключения в localhost и порт 4000.

    server = tcpserver("localhost",4000)
    server = 
      TCPServer with properties:
    
            ServerAddress: "127.0.0.1"
               ServerPort: 4000
                Connected: 0
            ClientAddress: ""
               ClientPort: []
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    

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

    client = tcpclient("localhost",4000)
    client = 
      tcpclient with properties:
    
                  Address: 'localhost'
                     Port: 4000
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    

    См. значения Connected, ClientAddress, и ClientPort свойства для server.

    server
    server = 
      TCPServer with properties:
    
            ServerAddress: "127.0.0.1"
               ServerPort: 4000
                Connected: 1
            ClientAddress: "127.0.0.1"
               ClientPort: 65136
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    

    Выходные данные показывают, что server успешно принимает запрос от client и что client устанавливает соединение с server.

    Отправка данных клиенту путем их записи с помощью server объект. Поскольку клиент подключен к серверу, эти данные доступны в клиенте. Считывание этих данных из client объект.

    write(server,"hello world","string")
    read(client,11,"string")
    ans = 
    "hello world"
    

    Создайте сервер TCP/IP, который прослушивает запрос на подключение клиента по указанному порту и IP-адресу. Затем считывайте данные, отправленные на сервер от подключенного клиента.

    Создайте сервер TCP/IP, который прослушивает подключения в localhost и порт 4000.

    server = tcpserver("localhost",4000)
    server = 
      TCPServer with properties:
    
            ServerAddress: "127.0.0.1"
               ServerPort: 4000
                Connected: 0
            ClientAddress: ""
               ClientPort: []
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    

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

    client = tcpclient("localhost",4000)
    client = 
      tcpclient with properties:
    
                  Address: 'localhost'
                     Port: 4000
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    

    Отображение значений Connected, ClientAddress, и ClientPort свойства для server.

    server
    server = 
      TCPServer with properties:
    
            ServerAddress: "127.0.0.1"
               ServerPort: 4000
                Connected: 1
            ClientAddress: "127.0.0.1"
               ClientPort: 65440
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    

    Выходные данные показывают, что server успешно принимает запрос от client и что client устанавливает соединение с server.

    Запись данных в клиент TCP/IP. Поскольку клиент подключен к серверу, эти данные доступны на сервере. Считывание первых пяти значений строковых данных с помощью server объект.

    write(client,"helloworld","string")
    read(server,5,"string")
    ans = 
    "hello"
    

    При чтении еще пяти значений будут получены оставшиеся строковые данные.

    read(server,5,"string")
    ans = 
    "world"
    
    Представлен в R2021a