Создание сервера TCP/IP
A tcpserver объект представляет сервер TCP/IP, который получает запрос на подключение клиента TCP/IP от указанного IP-адреса и номера порта и принимает запрос. Как только сервер установит соединение, вы сможете получать данные от клиента и отправлять их клиенту с помощью функций чтения и записи. Каждый tcpserver объект поддерживает только одно клиентское соединение одновременно.
создает сервер TCP/IP, который прослушивает запрос на подключение клиента TCP/IP по IP-адресу, указанному t = tcpserver(address,port)address и номер порта, указанный port.
Входной аргумент address устанавливает ServerAddress свойство и входной аргумент port устанавливает ServerPort собственность.
создает сервер TCP/IP, который прослушивает запрос на подключение клиента по номеру порта t = tcpserver(port)port и IP-адрес "::". Этот IP-адрес указывает, что сервер принимает подключение клиента с любого действительного IP-адреса на компьютере.
создает сервер TCP/IP и задает дополнительные свойства, используя один или несколько аргументов пары имя-значение. Установите t = tcpserver(___,Name,Value)Timeout, ByteOrder, и ConnectionChangedFcn с использованием аргументов пары имя-значение. После любой комбинации входных аргументов в предыдущих синтаксисах заключите каждое имя свойства в кавычки с последующим значением свойства.
Например, t = tcpserver(4000,"Timeout",20,"ByteOrder","big-endian") создает сервер TCP/IP, который прослушивает подключения к порту 4000 по IP-адресу "::". Он устанавливает период тайм-аута 20 секунд, а порядок байтов - big-endian.
ServerAddress - IP-адрес, где сервер прослушивает"::" (по умолчанию) | символьный вектор | строковый скаляр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
ServerPort - номер порта, где сервер прослушиваетНомер порта, где сервер прослушивает клиентские подключения TCP/IP, указанный как число от 1 до 65535 включительно. Это свойство можно задать только при создании объекта.
Пример:
t = tcpserver("144.212.100.10",4000) прослушивает подключения через порт 4000 и IP-адрес 144.212.100.10.
Типы данных: double
Timeout - Время завершения операций чтения и записиДопустимое время в секундах для завершения операций чтения и записи, указанное как числовое значение. Задайте это свойство при создании объекта с помощью аргумента пары имя-значение. Его также можно изменить после создания объекта с помощью точечной нотации.
Пример: t = tcpserver("144.212.100.10",4000,"Timeout",20) устанавливает время ожидания чтения/записи равным 20 секундам.
Типы данных: double
ByteOrder - Последовательный порядок байтов"little-endian" (по умолчанию) | "big-endian"Последовательный порядок, в котором байты упорядочены в большие числовые значения, указанные как "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
ConnectionChangedFcn - Функция обратного вызова, вызванная событием подключения или отключенияФункция обратного вызова, инициируемая событием соединения или разъединения, указанная как дескриптор функции. Событие подключения или отключения возникает, когда клиент TCP/IP подключается к серверу или отключается от него. Задайте это свойство при создании объекта с помощью аргумента пары имя-значение. Его также можно изменить после создания объекта с помощью точечной нотации. Это свойство остается пустым до тех пор, пока не будет назначен дескриптор функции.
Пример: t = tcpserver("144.212.100.10",4000,"ConnectionChangedFcn",@myConnectionFcn) устанавливает функцию обратного вызова соединения в myConnectionFcn. Когда клиент подключается или отключается, myConnectionFcn триггеры.
Типы данных: function_handle
Connected - Состояние подключения к серверуfalse или 0 (по умолчанию) | true или 1Это свойство доступно только для чтения.
Состояние подключения к серверу, возвращенное как числовое или логическое 1 (true) или 0 (false). Если это свойство имеет значение trueклиент TCP/IP подключен к серверу.
Одновременно можно подключиться только к одному клиенту. Если клиент отключается от сервера, можно немедленно подключиться к другому клиенту.
Типы данных: logical
ClientAddress - IP-адрес подключенного клиента"" (по умолчанию) | строковый скалярЭто свойство доступно только для чтения.
IP-адрес подключенного клиента, возвращенный в виде строки. Значение этого свойства соответствует IP-адресу клиента. Значение этого свойства является пустым до тех пор, пока клиент TCP/IP не установит соединение с сервером. Если клиент отключается от сервера, значение этого свойства становится пустым.
Пример:
t.ClientAddress возвращает IP-адрес подключенного клиента.
Типы данных: string
ClientPort - Номер порта подключенного клиента[] (по умолчанию) | числовыеЭто свойство доступно только для чтения.
Номер порта подключенного клиента, возвращенный как двойной. Значение этого свойства является пустым до тех пор, пока клиент TCP/IP не установит соединение с сервером.
Пример:
t.ClientPort возвращает номер порта подключенного клиента.
Типы данных: double
Terminator - Символ терминатора для данных"LF" (по умолчанию) | "CR" | "CR/LF" От | 0 до 255Символ терминатора для чтения и записи данных, завершенных ASCII, возвращаемый как "LF", "CR", "CR/LF"или числовое целое число от 0 до 255 включительно. Если терминаторы чтения и записи отличаются, Terminator возвращается в виде массива ячеек 1x2 этих значений. Задайте это свойство с помощью configureTerminator функция.
Пример: configureTerminator(t,"CR") устанавливает терминаторы чтения и записи в значение "CR".
Пример: configureTerminator(t,"CR",10) устанавливает признак конца чтения в значение "CR" и признак окончания записи в 10.
Типы данных: double | char | string
NumBytesAvailable - Количество байтов, доступных для чтенияЭто свойство доступно только для чтения.
Число байтов, доступных для чтения, возвращаемых в виде числового значения.
Пример:
t.NumBytesAvailable возвращает число байтов, доступных для чтения.
Типы данных: double
NumBytesWritten - Общее число записанных байтовЭто свойство доступно только для чтения.
Общее число записанных байт, возвращаемых в виде числового значения. Значение этого свойства не сбрасывается в 0 при отключении или повторном подключении клиента к серверу.
Пример:
t.NumBytesWritten возвращает число записанных байт.
Типы данных: double
BytesAvailableFcnMode - Доступный режим триггера обратного вызова в байтах"off" (по умолчанию) | "byte" | "terminator"Доступный режим триггера обратного вызова в байтах, возвращен как "off", "byte", или "terminator". Этот параметр определяет, выключен ли обратный вызов, инициируемый количеством байтов, указанным BytesAvailableFcnCount, или инициируется терминатором, указанным Terminator. Задайте это свойство с помощью configureCallback функция.
Пример:
configureCallback(t,"byte",50,@callbackFcn) устанавливает callbackFcn обратный вызов для запуска каждый раз, когда 50 байт новых данных доступны для чтения.
Пример: configureCallback(t,"terminator",@callbackFcn) устанавливает callbackFcn обратный вызов для запуска, когда терминатор доступен для чтения.
Пример: configureCallback(t,"off") отключает обратные вызовы.
Типы данных: char | string
BytesAvailableFcnCount - Количество байтов данных для запуска обратного вызоваЧисло байтов данных, инициирующих обратный вызов, указанный BytesAvailableFcn, вернулся двойкой. Это значение используется только в том случае, если BytesAvailableFcnMode свойство - "byte". Задайте эти свойства с помощью configureCallback функция.
Пример:
configureCallback(t,"byte",50,@callbackFcn) устанавливает callbackFcn обратный вызов для запуска каждый раз, когда 50 байт новых данных доступны для чтения.
Типы данных: double
BytesAvailableFcn - Функция обратного вызова, инициируемая событием доступности байтовФункция обратного вызова, инициируемая событием доступности байтов, возвращается как дескриптор функции. Событие доступности байтов генерируется путем приема определенного количества байтов или терминатора. Это свойство остается пустым до тех пор, пока не будет назначен дескриптор функции. Задайте это свойство с помощью configureCallback функция.
Пример:
configureCallback(t,"byte",50,@callbackFcn) устанавливает callbackFcn обратный вызов для запуска каждый раз, когда 50 байт новых данных доступны для чтения.
Типы данных: function_handle
ErrorOccurredFcn - Функция обратного вызова, вызванная событием ошибкиФункция обратного вызова, вызванная событием ошибки, возвращаемая как дескриптор функции. Событие ошибки генерируется при прерывании или потере сетевого соединения для сервера. Это свойство остается пустым до тех пор, пока не будет назначен дескриптор функции.
Пример:
t.ErrorOccurredFcn = @myErrorFcn
Типы данных: function_handle
UserData - Свойство общего назначения для пользовательских данныхСвойство общего назначения для пользовательских данных, возвращаемое как любой тип данных 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 clientClient 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"
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.