Протоколы Internet


Winsock (для UNIX, Windows- и -NT) - часть 32


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

Но после того как информация о состоянии сети получена, условия могут измениться, партнеры могут согласовать другой уровень QOS, так что приложение должно быть готово ко всему. Для информирования клиента о возможных изменениях условий в Winsock используется механизм сетевых событий (FD_QOS и FD_GROUP_QOS). Сервис-провайдер должен генерировать события типа FD_QOS/FD_GROUP_QOS, если уровень сервиса изменился значительно. Клиент должен использовать WSPIoctl с кодами команд SIO_GET_QOS и/или SIO_GET_GROUP_QOS, чтобы получить соответствующую спецификацию потока и выяснить, изменился ли уровень сервиса (QOS). Структура QOS должна актуализоваться вне зависимости от типа события FD_QOS/FD_GROUP_QOS. Если новый уровень сервиса неприемлем, клиент может попытаться приспособиться к новым условиям или закрыть соединение. При повторной попытке согласовать уровень QOS успешный выход из процедуры WSPIoctl указывает, что новое значение QOS приемлемо. Структура QOS в WinSock 2 описана в файле Winsock2.h и представлена ниже.

typedef enum

{

BestEffortService,

ControlledLoadService,

PredictiveService,

GuaranteedService

} GUARANTEE;

typedef struct _flowspec

{

int32

TokenRate;

/* В байтах/сек */

int32

TokenBucketSize;

/* В байтах */

int32

PeakBandwidth;

/* В байтах/сек */

int32

Latency;

/* В микросекундах */

int32

DelayVariation;

/* В микросекундах */

GUARANTEE LevelOfGuarantee;

int32

CostOfCall;

/* Зарезервировано для будущего использования, должно быть = 0 */

int32

NetworkAvailability

/* только для чтения:

1, если есть доступ,

0, если нет */

} FLOWSPEC, FAR * LPFLOWSPEC;

typedef struct _QualityOfService

{

FLOWSPEC

SendingFlowspec;

/* Спецификация потока для данных */




Начало  Назад  Вперед



Книжный магазин