Создание сервера 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
- Номер порта подключенного клиента[]
(по умолчанию) | числоЭто свойство доступно только для чтения.
Номер порта подключенного клиента, возвращенный как double. Значение этого свойства пусто до тех пор, пока клиент TCP/IP не установит соединение с сервером.
Пример:
t.ClientPort возвращает номер порта подключенного клиента.
Типы данных: double
Terminator
- Символ терминатора для данных"LF"
(по умолчанию) | "CR"
| "CR/LF"
| 0 по 255Terminator символа для чтения и записи данных, оконечных по 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
- Функция обратного вызова, инициируемая событием bytes availableФункция обратного вызова, инициируемая событием, доступным в байтах, возвращаемая как указатель на функцию. Событие, доступное в байтах, генерируется путем приема определенного количества байтов или терминатора строки. Это свойство пустое, пока вы не назначите указатель на функцию. Установите это свойство с 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 | Считайте один бинблок данных, отправленных на сервер 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"
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.