![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
lat |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 14.1.2008 Репутация: нет Всего: 1 |
Уже битый час ковыряюсь со следующим жуком: В дебаге четко видно, что прога слетает на
![]() Причем это в только в 9-й студии! ![]() ![]() Что же это может быть? Это сообщение отредактировал(а) lat - 7.4.2009, 20:47 --------------------
Gott weiß ich will kein Engel sein |
||||
|
|||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 5 Всего: 154 |
код ошибки равен чему?
в любом случае это что-то из:
|
|||
|
||||
lat |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 14.1.2008 Репутация: нет Всего: 1 |
А ошибки как таковой нет
![]() Просто зависаемс на этом куске и ждем хрен знает чего. --------------------
Gott weiß ich will kein Engel sein |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 1 Всего: 50 |
а ты коннекшн закрыл?
shutdown+closesocket Это сообщение отредактировал(а) Alca - 7.4.2009, 23:31 |
|||
|
||||
lat |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 14.1.2008 Репутация: нет Всего: 1 |
Дык дело не доходит до конца функции) Добавлял и закрытие сокетов, но все равно зависает. Сейчас дебажу на CodeGear (студия сильно капризничать начала), так в нем прога вылетает на вызове ф-и connect. В дебаге этот кусок просто черная дыра, засосало все, и тупо отдавать не хочет. делал даже так:
ну не может оно подхватывать что то левое из пред вызова ![]() или может? Это сообщение отредактировал(а) lat - 8.4.2009, 00:45 --------------------
Gott weiß ich will kein Engel sein |
||||
|
|||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 5 Всего: 154 |
||||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
lat
Как я понял, вы идёте дебагом и при вызове этой строки усё подвисает? Если так - то тут проблема с VS. ИМХО -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Comm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 269 Регистрация: 31.8.2007 Где: Санкт-Петербург Репутация: -1 Всего: 1 |
Проверьте компьютер на вирусы.
Слышал есть вирус который блокирует все функции WSA,может в этом дело. -------------------- =))))) ![]() |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: нет Всего: 306 |
однако ![]() очень интересно. возникает вопрос - а какой ты хидар подключаешь? winsock.h или winsock2.h? какой второй итерации? ![]() и так - между делом - как же ты будешь общаться с серваком без send/recive? Или что - достаточно факта коннекта? |
|||
|
||||
Alca |
|
||||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 1 Всего: 50 |
а в релизе тоже самое?
Добавлено через 1 минуту и 30 секунд
Значит первые две отработало... ![]() Добавлено через 3 минуты и 23 секунды
А если наоборот:
Добавлено через 4 минуты и 22 секунды
|
||||||||||
|
|||||||||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Сначала идёт shutdown, а потом closesocket()
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 1 Всего: 23 |
lat, так вродь косяков не вижу, но может дело из причин, которые ниже:
- где ждётся завершение потока - инициализацию/вуинициализацию Winsock лучше делать раз для все апликухи |
|||
|
||||
Олег2005 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 421 Регистрация: 26.5.2005 Где: Рига Латвия Репутация: 6 Всего: 11 |
Я всегда советую при работах в каких-то средах никогда не пользоваться для отладки дебагерами - делается код со всеми фиксациями ошибок - и клиент/сервер проверяются только на релизных экзешниках.
Многие среды в дебагере дают и acces violation, и stack overflow и тд. Это зафиксированный факт - мы заставляем модули стека взаимодействовать со средой - что не есть гуд. |
|||
|
||||
lat |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 14.1.2008 Репутация: нет Всего: 1 |
дык если б Я знал...если б Я знал, то сюда не писал бы)
да, именно так. Тогда и CodeGear включите в список)
А Я думал что Я один такой параноик - в хорошем смысле ;) ...запустил аваст на проверку ... подождем результатов) Пробовал и то и другое - результат тот же. через пол часика отпишусь с примером ну так!) Это ж пинг типа) Посылка данных пока не нужна. ЗЫ На остальные вопросы и предложения отпишусь через 30-60 мин (ща нада в магазин сбегать ... хавчик требует что бы его отзавтракали... ) Это сообщение отредактировал(а) lat - 8.4.2009, 11:43 --------------------
Gott weiß ich will kein Engel sein |
||||
|
|||||
lat |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 14.1.2008 Репутация: нет Всего: 1 |
Переписал код, добавил: закрытие сокета( спс Alca за предос-й код ), кетч и решил дебажить по старинке - с помощью логов (спс Олег2005 что заставил вспомнить сей чудесный метод=)
Также последовал совету увж. SenkraD и сделал одну инициализацию/вуинициализацию.
Предоставляю лог:
Четко видно что зависло после вызова ф-и connect. И почему соб-но 10057 - Сокет не подсоединенный ??? Как это лечить уважаемые? Добавлено через 8 минут и 22 секунды Кстати, тему следовало б переименовать но нет такой возможности ) Глюк этот и без потока наблюдается. Так что тема "Сокеты и 10057 чертей" пока не закрыта. Ищем решение... ЗЫ Попробуйте кто-то у себя этот код выполнить, может у меня дейст-но "тазик" шалит. Это сообщение отредактировал(а) lat - 8.4.2009, 12:53 --------------------
Gott weiß ich will kein Engel sein |
||||
|
|||||
Alca |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 1 Всего: 50 |
Добавлено через 4 минуты и 35 секунд
|
||||
|
|||||
lat |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 14.1.2008 Репутация: нет Всего: 1 |
И-за этого у меня прога зависает. Не может она дождаться выхода из потока)
А это у тебя как и у меня, зависает? Или ты просто не стал весь лог выкладывать? Это сообщение отредактировал(а) lat - 8.4.2009, 13:35 --------------------
Gott weiß ich will kein Engel sein |
|||
|
||||
Alca |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 1 Всего: 50 |
Сделай консольное приложение Добавлено через 1 минуту и 24 секунды
По таймауту connect отключается Добавлено через 2 минуты и 38 секунд
6 айпишников просканил, дальше закрыл консоль |
||||||
|
|||||||
Олег2005 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 421 Регистрация: 26.5.2005 Где: Рига Латвия Репутация: 6 Всего: 11 |
m_addr.sin_addr.s_addr = inet_addr(ip.c_str());
У меня как-то подозрение на STL-овский стринг. А почему нельзя для начала сделать без мудростей inet_addr("10.0.0.45"); Это раз. Второе - файрволл стоит? У него на 80 порт есть предпочтительные приложения - может на 80 иные не пускать Еще: WSAENOTCONN (10057) Socket is not connected. Berkeley description: A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket) no address was supplied. WinSock description: Same as Berkeley, and then some. An application attempted an input/output network function call before establishing an association with a remote socket (i.e. before calling connect() or accept()). . Developer suggestions: Chances are, that if you encounter this error, your application ignored the failure of some previous function. Although some WinSock implementations might not issue other errors if a connection fails, so you can handle this error as you would others that indicate connection failure. |
|||
|
||||
lat |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 14.1.2008 Репутация: нет Всего: 1 |
Пора этому жуку уже имя давать, пускай будет "Зависяк" от слова зависание)
Да вроде тоже самое. Зависяк находит себе логово при вызове ф-и connect. И не важно на какой итерации, бывает что на первой, а бывает что и на 5. Ну если считать стандартный експишный фаервол за фаерволл - тогда стоит. Но хочу заметить что для него это уж сильно "громкое" звание) Да и вроде не было у этого малыша претензий к мое проге. Добавлено @ 22:57 Олег2005 Ты гений! Действительно все приколы и-за 80 - го порта. Если поставить другой, все жуки исчезают) НО! Как быть если мне нужно найти именно все тачки с 80 - м портом??? Задачу не снимаю с повестки дня, заседание продолжается! ))) ЗЫ знаю ведь что копаем в правильном направлении. Еще немного и ...! ЗЫЗЫ В конечном итоге ответ может быть банальным, но согласитесь. Весьма интригующим и ожидаемым) Это сообщение отредактировал(а) lat - 8.4.2009, 23:00 --------------------
Gott weiß ich will kein Engel sein |
|||
|
||||
lat |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 14.1.2008 Репутация: нет Всего: 1 |
Этот фаервол совсем обнаглел. Если указывать в качестве порта например 445 или 135 (ищу виндовые тазики), то снова Зависяк вылазит.
Хочу доброе дело сделать, а мне тут грабли со стороны огненной стены. Ну и как с ним бороться? А может это не и-за фарвола...хз. Но почему то зависает только тогда когда сканируется реально работающий порт. ЗЫ Я в "печали", а также в злостном дебаге, пора отдохнуть...пойду 22-ю серию героев посмотрю. Сей "свежак" должен поднять мне веки ... и настроение) Жду ваших советов. Это сообщение отредактировал(а) lat - 8.4.2009, 23:12 --------------------
Gott weiß ich will kein Engel sein |
|||
|
||||
Олег2005 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 421 Регистрация: 26.5.2005 Где: Рига Латвия Репутация: 6 Всего: 11 |
И так про зависяк.
Если ошибка 10057 - то это не ошибка connect() - это ошибка send/recv при попытке слать по сокету, который был закрыт (shutdown). Так что ошибка в логика программы. теперь здесь DWORD Res = WaitForSingleObject( ht, INFINITE); ht - это у вас дескриптор (handle) А чего вы от этого хендла ждете то? Пример: Here's a bare bones example of using WaitForSingleObject with a thread handle.
A thread signals when it finishes execution. Signal states are managed by the operating system, it's not a good idea to attempt to manipulate them directly. A SetEvent/ResetEvent pair sounds like a good starting point. Это сообщение отредактировал(а) Олег2005 - 8.4.2009, 23:15 |
|||
|
||||
lat |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 14.1.2008 Репутация: нет Всего: 1 |
Хм. Любопытно. А соб-но не было разрывов то) Не было ни отправки ни считывания данных из сокета. Откуда тогда такая ошибка?) Да это мне Alca дал код, а Я сразу так не подумавши и впихнул его (вот так кстати получаются иногда не только ошибки но и .... =) Раньше без ожидания все было, мне пока незачем ждать завершения потока. Помогите найти) Вроде ж кода немного. Вот последняя моя редакция - место обитания Косяка)
Это сообщение отредактировал(а) lat - 8.4.2009, 23:36 --------------------
Gott weiß ich will kein Engel sein |
||||
|
|||||
Alca |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 1 Всего: 50 |
А ничего страшного, что этот код находиться в блоке???? Добавлено @ 23:47 Как ты думаешь , что произойдет сним после выхода из этого блока???? ![]() Что произойдет с локальными переменными? Добавлено @ 23:48 Если так
то лучше уже так:
Но хендл потока надо закрывать. Это сообщение отредактировал(а) Alca - 8.4.2009, 23:50 |
||||||
|
|||||||
lat |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 14.1.2008 Репутация: нет Всего: 1 |
Так это переменные для инициализации библиотеки Ws2_32.dll. В потоке они не используются. Так в чем вопрос) Я его и закрываю то " CloseHandle(ht);". Мне не нужно ждать завершения потока. Можно даже так сделать:
Результат от такой рокировки не изменится. Сейчас задача несколько другая - решить глюк с Зависяком. Это сообщение отредактировал(а) lat - 9.4.2009, 00:36 --------------------
Gott weiß ich will kein Engel sein |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 1 Всего: 50 |
А зачем их инициализировать если они автоматом разрушаются??? |
|||
|
||||
lat |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 14.1.2008 Репутация: нет Всего: 1 |
Автоматом, это как? Должны только после "WSACleanup();" ) Добавлено @ 01:24 Как урезать таймауты на соединение? Оказывается висяка нет, просто соединение долго устанавливается.
Это сообщение отредактировал(а) lat - 9.4.2009, 01:46 --------------------
Gott weiß ich will kein Engel sein |
|||
|
||||
lat |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 14.1.2008 Репутация: нет Всего: 1 |
+ hot fix !!!
Это сообщение отредактировал(а) lat - 9.4.2009, 01:34 --------------------
Gott weiß ich will kein Engel sein |
|||
|
||||
lat |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 14.1.2008 Репутация: нет Всего: 1 |
немного погуглил.
У меня сложились такие выводы: 1. Если уменьшить таминг - это не есть гут. Так как нет 100% гарантии что хост успеет "ответить". 2. Единств-м решением пинга через сокеты, это увлечения скорости за счет многоза-ти. 3. Намного быстрее для пинга использовать АРП запросы. 4. Учим матчасть) ЗЫ Своим ночным монологом Я почти все разобрал по полочкам. Тема на грани закрытия) ЗЫЗЫ Если кто знает как уменьшить таймаут без потерь, буду только рад это увидеть. Пишите сюда!) Это сообщение отредактировал(а) lat - 9.4.2009, 02:46 --------------------
Gott weiß ich will kein Engel sein |
|||
|
||||
Олег2005 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 421 Регистрация: 26.5.2005 Где: Рига Латвия Репутация: 6 Всего: 11 |
Во первых, это неверно.
Вы не закрыли сокет - а выгрузили все библиотеки if(sock == INVALID_SOCKET){ WSACleanup(); log("ERORR:INVALID_SOCKET"); } Это в данном случае не причина скорее всего, но так не делают Далее 445 порт на виндовской машине занят виндовской службой Это используют вирусы - вы случайно не его пишете? "Randon" распространяется по IRC-каналам и ресурсам локальных сетей и заражает компьютеры под управлением операционных систем Windows 2000 и Windows XP. Для проникновения на компьютер он подключается к IRC-серверу (или локальной сети), сканирует находящихся на нем пользователей, устанавливает с ними соединение по порту 445 и пытается подобрать пароль из встроенного списка наиболее часто используемых фраз. В случае успешного взлома системы "Randon" пересылает на нее троянскую программу "Apher" |
|||
|
||||
lat |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 14.1.2008 Репутация: нет Всего: 1 |
Как то уж сильно категорично, но Я Вам верю. Так причину нашол уже, таймауты урезать нужно. Они там по дефолту от 3 до 10 сек. В зависимости от сети. Читайте мой пред. пост. Если б и писал то не вирусы, а исключительно червяков. Которые деструктивного ничего не делали б, а просто выводили сообщение типа "Посади дерево, вырости сына и снеси нахрен бетонный дом и построй избушку в лесу!" (да даже это и то мне не очень интересно, Я свою точку мнения не люблю навязывать другим. У каждого своя голова, пускай сам решает как ему жить. А вот если попросят помощи, то - помогу.). В общим цель у меня мирная, пишу сканер для локальной сети, что ж Я виноват что винду только по этим портам определить можно. ![]() ))) Приятно что Вы так об бо мне думаете, но мой моск еще не созрел для такого. А когда созреет, то лишь для локальных тестов ![]() Это сообщение отредактировал(а) lat - 10.4.2009, 00:58 --------------------
Gott weiß ich will kein Engel sein |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |