Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы»




НазваниеМетодические указания к курсовой работе по дисциплине «Системное программирование и операционные системы»
страница9/11
Дата публикации05.03.2013
Размер1.32 Mb.
ТипМетодические указания
uchebilka.ru > Математика > Методические указания
1   2   3   4   5   6   7   8   9   10   11

Открытие соединения


При получении запроса клиента открытие соединения выполняется функцией

SOCKET accept (SOCKET s, struct sockaddr FAR *addr, int FAR *addrlen);

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

Если соединение открывается успешно, то функция accept() возвращает дескриптор нового сокета, который будет использоваться для управления новым соединением. Если произошла ошибка, функция accept() возвращает код INVALID_SOCKET, и для получения более подробной информации об ошибке необходимо вызвать функцию WSAGetLastError().

Исходный сокет продолжает ожидание запросов на новые соединения, которые затем открываются снова с помощью функции accept(). Каждое открытое соединение управляется отдельным сокетом, дескриптор которого возвращается из этой функции.

Запрос на открытие соединения

Приложение может послать запрос на соединение с помощью функции

int connect (SOCKET s, const struct sockaddr FAR *name, int namelen);

Второй и третий параметр используются для указания адреса и порта, к которому нужно подсоединиться.

Прием данных на сокете дейтаграмм


После создания соответствующего сокета и привязки его к определенному адресу и порту можно принимать данные от другого приложения. Для этого можно использовать функцию

int recvfrom (SOCKET s, char FAR * buf, int len, int flags,

struct sockaddr FAR *from, int FAR * fromlen);

Первый параметр – это дескриптор сокета, возвращаемый функцией socket(). Далее идут указатель на буфер для приема дейтаграммы и длина буфера. Параметр flags может быть равен MSG_PEEK для заполнения буфера таким образом, что дейтаграмма остается во входной очереди. Последние два параметра используются для получения адреса сокета, пославшего дейтаграмму. По этому адресу можно послать ответ.

При успешном считывании дейтаграммы функция recvfrom() возвращает количество прочитанных байтов. При ошибочном приеме дейтаграммы возвращается значение SOCKET_ERROR; для получения кода ошибки необходимо вызвать функцию WSAGetLastError().

Если размер буфера , переданный в функцию recvfrom() , слишком мал для приема всей дейтаграммы целиком, то буфер заполняется теми данными, которые в него помещаются, оставшаяся часть теряется безвозвратно. В этом случае функция recvfrom() возвращает значение SOCKET_ERROR , а функция WSAGetLastError() – значение WSAEMSGSIZE.

Посылка данных с сокета дейтаграмм


Отправка данных выполняется функцией

int sendto (SOCKET s, const char FAR * buf, int len, int flags,

const struct sockaddr FAR *to, int tolen);

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

Если функция sendto() отрабатывает корректно, она возвращает количество посланных байтов. В случае ошибки функция возвращает SOCKET_ERROR. Для определения кода ошибки необходимо вызвать функцию WSAGetLastError().

При попытке послать дейтаграмму большего размера, чем максимально допустимый в данной реализации WinSock, код ошибки будет равен WSAEMSGSIZE. Максимально допустимый размер дейтаграммы можно определить путем вызова функции WSAStartup().

Отправка и прием данных через сокеты потоков


После установления соединения между сокетом клиента и сокетом сервера пересылка данных выполняется с помощью функции

int send (SOCKET s, const char FAR * buf, int len, int flags);

Функция send() принимает в качестве аргументов дескриптор сокета, через который посылаются данные, указатель на буфер, содержащий пересылаемые данные и его длину в байтах, а также параметр flags. Если этот параметр равен MSG_DONTROUTE, в пересылаемый набор данных не включается информация о маршрутизации; если его значение равно MSG_OOB, посылается поток привилегированных (out-of-band) данных.

Объем данных, пересылаемых одним вызовом функции send() не должен превышать размера пакета, максимально допустимого в данной сети. При попытке пересылки большего объема данных функция send() завершится аварийно, а функция WSAGetLastError() возвратит код ошибки WSAEMSGSIZE.

Для приема данных через сокет используется функция

int recv (SOCKET s, char FAR * buf, int len, int flags);

Параметры buf и len определяют соответственно буфер для приема данных и его длину. Параметр flags может принимать значения MSG_OOB для приема привилегированных данных или MSG_PEEK для заполнения буфера без удаления данных из входной очереди.

Если во входной очереди находятся данные для сокета, функция recv() возвращает количество прочитанных байтов, которое равно объему доступных данных во входной очереди и не превосходит значения len . Если данных нет, то recv() переводит программу в состояние ожидания появления данных.

1   2   3   4   5   6   7   8   9   10   11

Похожие:

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» iconМетодические указания к выполнению курсовой работы «Гребные электрические...
Методические указания к выполнению курсовой работы «гребные электрические установки» по дисциплине «электрические системы и комплексы...

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» iconМетодические указания к курсовой работе по курсу "Разведка месторождений полезных ископаемых"
Методические указания к выполнению курсовой работы по дисциплине «Разведка месторождений полезных ископаемых» (для студентов очной...

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» iconМетодические указания к курсовой работе по дисциплине «Теория электрическихцепей»

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» iconМетодические указания и задания к лабораторным работам по курсу «Архитектура компьютеров (АК)»
Методические указания к лабораторным работам по курсу “Архитектура компьютеров предназначены для студентов специальностей «Системное...

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» icon«Системное программирование и операционные системы»
Все цитаты, цифровой, фактический материал и библиографические сведенья проверены, запись единиц соответствует стандартам

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» iconМетодические указания к выполнению курсовой работы по дисциплине «Вычислительный практикум»
Методические указания к выполнению курсовой работы по дисциплине «Вычислительный практикум» для студентов заочной формы обучения...

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» iconМетодические указания к выполнению курсовой работы по дисциплине «Основы маркетинга»
Бобрушева В. В. Методические указания к выполнению курсовой работы по дисциплине «Основы маркетинга» для студентов 2 курса дневной...

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» iconМетодические указания к выполнению лабораторных работ по дисциплине...
Компьютерная инженерия” (для студентов дневной и заочной формы обучения специальности 091501 “Компьютерные системы и сети”, 091502...

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» iconМетодические указания к выполнению курсовой работы по дисциплине...
Методические указания к выполнению курсовой работы по дисциплине «Техническая термодинамика»/ Составители

Методические указания к курсовой работе по дисциплине «Системное программирование и операционные системы» iconМетодические указания к выполнению контрольной работы (ргр) по дисциплине...
Методические указания к выполнению контрольной работы (ргр) по дисциплине «Объектно-ориентированное программирование» (для студентов...

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
uchebilka.ru
Главная страница


<