Навигация:
<< >> Оглавление Указатель

Приложения

Приложение А. Функции, константы и структуры RDS

А.2. События блока и связанные с ними описания

А.2.8. События обмена данными по сети

А.2.8.3. RDS_BFM_NETDATARECEIVED – получение данных блоком

Поток, в котором вызывается функция модели

Главный поток RDS.

Первый параметр функции модели (int CallMode)

Константа RDS_BFM_NETDATARECEIVED.

Третий параметр функции модели (void *ExtParam)

Указатель на структуру RDS_NETRECEIVEDDATA, содержащую информацию о принятых данных и указатели на них.

Возвращаемое функцией модели значение

Не используется, можно возвращать любое значение.

Примечания

Реакция на событие RDS_BFM_NETDATARECEIVED вызывается у блока, для которого поступили данные с сервера. Для того, чтобы принимать данные по сети, блок должен сначала вызовом rdsNetConnect установить соединение с конкретным каналом передачи данных конкретного сервера, и указать при этом, что он будет получать данные из этого канала. Процедуры обмена данными по сети, используемые в RDS, подробно описаны в §2.15 руководства программиста.

В параметре ExtParam передается указатель на структуру RDS_NETRECEIVEDDATA:

  typedef struct {
     ConnId;              // Идентификатор соединения
     HostA;                // URL или IP-адрес сервера (UTF8)
     HostW;               // URL или IP-адрес сервера (UTF16)
    // Host;              // URL или IP-адрес сервера ()
     Port;                // Порт
     ChannelA;             // Имя канала (UTF8)
     ChannelW;            // Имя канала (UTF16)
    // Channel;           // Имя канала ()
     Id;                  // Принятое целое число
     StrA;                 // Принятая строка (UTF8)
     StrW;                // Принятая строка (UTF16)
    // Str;               // Принятая строка ()
     Buffer;                // Принятый буфер или NULL
     BufferSize;             // Размер принятого буфера
     SenderStation; // Идентификатор
                                  // машины-отправителя
     SenderBlock;     // Идентификатор блока
                                  // на машине-отправителе
  } RDS_NETRECEIVEDDATA;
  typedef RDS_NETRECEIVEDDATA *RDS_PNETRECEIVEDDATA;

Поля структуры

ConnId (RDSINT32)
Идентификатор соединения, возвращенный функцией rdsNetConnect при его создании.
HostA (RDSCSTR), HostW (RDSWCSTR), Host (RDSXCSTR)
Имя (URL) или IP-адрес сервера, с которым установлено соединение (только в том случае, если в качестве сервера не используется та же копия «rds.exe», в которую загружена схема с данным блоком).
Port ()
Номер сетевого порта, через который идет обмен данными.
ChannelA (), ChannelW (), Channel ()
Имя канала передачи данных.
Id ()
Целый идентификатор полученных данных (произвольное целое число, указанное передавшим данные блоком в вызове одной из функций передачи).
StrA (), StrW (), Str ()
Указатель на принятую строку во внутренней памяти RDS. В этом поле никогда не находится константа NULL: даже если передавший блок не отправлял строку в составе порции данных, в поле Str будет содержаться указатель на пустую строку (то есть на нулевой байт).
Buffer (LPVOID)
Указатель на начало принятых двоичных данных во внутренней памяти RDS. Если передававший данные блок не отправлял двоичные данные, в этом поле будет находиться NULL.
BufferSize (DWORD)
Размер (в байтах) принятых двоичных данных, на которые указывает поле Buffer.
SenderStation (RDS_NETSTATION)
Идентификатор машины-передатчика, то есть машины, на которой запущена копия RDS, в которую загружена схема, блок которой отправил эти данные. Идентификаторы типа RDS_NETSTATION используются в RDS для передачи данных конкретному блоку на конкретной машине.
SenderBlock (RDS_NETBLOCK)
Идентификатор блока на машине-передатчике. Идентификаторы блоков типа RDS_NETBLOCK не взаимозаменяемы с идентификаторами RDS_BHANDLE: первые используются только в сетевых функциях для передачи данных конкретному блоку, вторые – в сервисных функциях для работы с блоками в пределах одной схемы. Пара (SenderStation, SenderBlock) однозначно определяет блок-отправитель данных и может использоваться в функции rdsNetSendData для передачи ответа пославшему данные блоку.

См. также

rdsNetBroadcastData, rdsNetSendData.


<< >> Оглавление Указатель