Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Stream socket service requirements

Boost , Boost.Asio , Reference

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Служба потоковых сокетов должна соответствовать требованиям для службы сокетов , а также дополнительным требованиям, перечисленным ниже.

В таблице ниже X обозначает класс обслуживания потоковых сокетов, a обозначает значение типа b обозначает значение типа X::implementation_type, ec обозначает значение типа error_code, f обозначает значение типа socket_base::message_flags, mb обозначает значение, удовлетворяющее требованиям мутируемой буферной последовательности, rh обозначает соответствие значений ReadHandler требованиям, cb обозначает значение, удовлетворяющее требованиям постоянной буферной последовательности , а wh обозначает соответствие значения WriteHandler требованиям.

Table 33. StreamSocketService requirements

выражение

тип возврата

утверждение/примечание
пред/пост-условие

a.(b,mb,f,ec);

size_t

pre: a.is_open(b).

Считывает один или несколько байт данных из подключенного гнезда b.

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

В случае успеха возвращает количество прочитанных байтов. В противном случае возвращается 0. Если общий размер всех буферов в последовательности mb составляет 0, функция должна вернуться 0 немедленно.

Если операция завершается из-за изящного закрытия соединения сверстником, операция должна выйти из строя с error::eof.

a.async_receive(b, mb, f, rh);

void

pre: a.is_open(b).

Инициирует асинхронную операцию для считывания одного или нескольких байтов данных из подключенного гнезда b. Операция выполняется через объект io_service a.get_io_service() и ведет себя в соответствии с требованиями асинхронной операции.

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

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

& #8212; последняя копия mb не будет уничтожена, или

& #8212; не будет задействован обработчик асинхронной операции,

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

Если операция завершается из-за изящного закрытия соединения сверстником, операция должна выйти из строя с error::eof.

Если операция завершается успешно, объект rh вызывается с числом переданных байтов. В противном случае он вызывается 0.

a.end(b, cb, f, ec);

size_t

pre: a.is_open(b).

Записывает один или несколько байтов данных в подключенный сокет b.

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

В случае успеха возвращает количество написанных байтов. В противном случае возвращается 0. Если общий размер всех буферов в последовательности cb составляет 0, функция должна вернуться 0 немедленно.

a.async_send(b, cb, f, wh);

void

pre: a.is_open(b).

Инициирует асинхронную операцию для записи одного или нескольких байтов данных в подключенный сокет b. Операция выполняется через объект io_service a.get_io_service() и ведет себя в соответствии с требованиями асинхронной операции.

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

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

& #8212; последняя копия cb не будет уничтожена, или

& #8212; не будет задействован обработчик асинхронной операции,

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

Если операция завершается успешно, то WriteHandler объект wh вызывается с числом переданных байтов. В противном случае он вызывается 0.



PrevUpHomeNext

Статья Stream socket service requirements раздела Boost.Asio Reference может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Reference ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 21:29:01/0.0072729587554932/0