![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
knut |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
вот обрезанный пример где точно есть наличие проблемы.
ормально кмпилится ![]() p.s буду признателен за помпшь Присоединённый файл ( Кол-во скачиваний: 11 ) ![]() --------------------
|
|||
|
||||
xvr |
|
||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Да уж, наличие проблемы есть ![]()
![]() Далее, передача данных:
Про == вместо != я уже писал:
|
||||||||
|
|||||||||
knut |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 7.2.2006 Репутация: нет Всего: нет |
xvr,
спасибо тебе за замечание но вот исправленный вариант. но меня убивает то что я не могу понять почему у меня WSAEventSelect е зависает и не как не выxодет. ![]() я WSARecive(...) вызвал в main() е у меня рисив нормально прошел. а вот посадить его на ивент не как не получается. не пойму то я не так делаю в организации потоковай модели.? Присоединённый файл ( Кол-во скачиваний: 14 ) ![]() --------------------
|
|||
|
||||
xvr |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Убери строку
в конце цикла обработки event'ов в CSocketThread::ThreadProc. Этот event автоматически сбрасывается в WSAWaitForMultipleEvents и снова устанавливается в теле обработки, после чего ты его сбрасываешь вручную и в таком состоянии он остается навсегда :( Кстати, отправка данных по FD_WRITE тоже не будет работать - вот выдержка из описания WSAEventSelect
|
||||||
|
|||||||
ama_kid |
|
||||||||||||||||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 5 Всего: 95 |
knut,
Эээ... как это так?!
Далее, почему-то везде используются расширения WSA... а тут:
Так же не совсем понятна идея использования массива евентов при вызове WSAEventSelect. В МСДН сказано:
А зачем ты из процедуры потока ThreadProc напрямую обращаешься к объектам CSocket obsocket и tagPACKET opacket без синхронизации? В таком случае - ты никак не защищен от межпотоковых коллизий и порчи данных... Про утечки памяти при таком использовании потока я уж и не говорю (нет выхода из цикла потоковой функции)... Ну и самое интересное: при запуске потока ты инициализируешь на обработку евентов сокет m_hsocket объекта CSocket
Ну и по мелочи - куча недочетов типа: Функция CSocket::OpenSoket возвращает тип bool, а ты пишешь return m_hsocket типа SOCKET. Вообще, складывается такое ощущение, что ты просто натаскал из разных источников куски кода и пытался придать им работающий вид...
-------------------- самурай без меча подобен самураю с мечом, но только без меча |
||||||||||||||||
|
|||||||||||||||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |