Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 531
от 09.05.2008, 03:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 355, Экспертов: 34
В номере:Вопросов: 2, Ответов: 4

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 135164: Здравствуте, Эксперты. Вопрос по блокирующим сокетам. В серверной части для определения момента поступления сообщений в сокет использую select(...). Но не понятно, как определить момент отсоединения клиента? Помогите, пожалуйста, подробным ответом, п...
Вопрос № 135205: Здравствуйте, уважаемые эксперты. Я пишу программу с использованием WinAPI в Visual C++ (2005) по реализации удалённого файлового браузера. Для того, чтобы подключить сокет, необходима функция socket, чтобы связать сокет с локальным портом - функция ...

Вопрос № 135.164
Здравствуте, Эксперты. Вопрос по блокирующим сокетам. В серверной части для определения момента поступления сообщений в сокет использую select(...). Но не понятно, как определить момент отсоединения клиента? Помогите, пожалуйста, подробным ответом, примером. Общую информацию, типа " для чего нужна эта ф-ция, а для чего эта", пожалуйста не надо: ее и так легко найти в инете. А вот конкретную реализацию что-то не нашел.
Отправлен: 03.05.2008, 16:35
Вопрос задал: Beginner (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: PavelGM
Здравствуйте, Beginner!

Обычно за select идет recv и по ее поведению/результатам и определяется закрыт ли сокет. Согласно MSDN - если сокет закрыт аккуратно и все данные уже считаны, то recv вернет 0 байт, если же сокет сброшен (reset), то recv вернет WSAECONNRESET. Надеюсь это вам поможет.

P.S. Обычно не использую select. Как-то хватало потоков для каждого клиента (создающихся после accept) и recv в потоке - появление в recv ошибки или считывание 0 байт было сигналом окончания соединения.
Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 04.05.2008, 10:37
Оценка за ответ: 5
Комментарий оценки:
Спасибо за развернутый ответ. Но насколько я понимаю recv не возвращает управление на следующий оператор, пока не появятся переданные данные и если соединение не закрыто, то как в этом случае вызвать send?


Вопрос № 135.205
Здравствуйте, уважаемые эксперты. Я пишу программу с использованием WinAPI в Visual C++ (2005) по реализации удалённого файлового браузера. Для того, чтобы подключить сокет, необходима функция socket, чтобы связать сокет с локальным портом - функция bind и т.д.
Но при добавлении в код соответствующих хэдеров, в которых они объявлены, а именно: #include <sys/socket.h>, #include <netinet/in.h>, #include <netdb.h>, - выскакивает ошибка о том, что они не могут быть найдены. Поиск с помощью простого виндоусовского поисковика тоже результатов не дал.
Подскажите, как разрешить эту проблему: скачать недостающие .h и .cpp-файлы или эти функции находятся в каких-то других библиотеках

P.S. В С++ я новичок. так что, не судите строго:)
Отправлен: 03.05.2008, 19:43
Вопрос задала: Versika (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Zetasm
Здравствуйте, Versika!

Читаем MSDN или Platform SDK:

Приложение:

Ответ отправил: Zetasm (статус: 2-ой класс)
Ответ отправлен: 03.05.2008, 20:00
Оценка за ответ: 4

Отвечает: Виктор Пырлик
Здравствуйте, Versika!

объявлено в Winsock2.h. - #include < Winsock2.h >
линкуйте Ws2_32.lib. - подключите к проекту.

А лучше, при создании проекта, поставте галочку Windows Sockets - тогда само всё подключится..

Это всё описано в MSDN.
---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Профессионал)
Россия, Свердловская обл.
Тел.: +7(34386) 53-5-98
ICQ: 490191733
----
Ответ отправлен: 03.05.2008, 20:06
Оценка за ответ: 5

Отвечает: CrazyIronToilet
Здравствуйте, Versika!

Дополню ответы ссылкой на хороший туториал по сокетам (сам по нему учился когда-то), туториал действительно хороший, недеюсь пригодится (см. приложение).

Приложение:

Ответ отправил: CrazyIronToilet (статус: Посетитель)
Ответ отправлен: 03.05.2008, 21:01


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 4.91 pre 5.0 RC1 от 13.04.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное