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

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

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

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

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

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

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

    Примеры

    свернуть все

    Создайте сервер TCP/IP, вызываемый t который прослушивает подключения по IP-адресу и порту 4000 вашего компьютера. Ваш 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