Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/96: Рейтинг темы: голосов - 96, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 06.01.2011
Сообщений: 24

UDP Socket Error 10054. Есть решение. Нужно только поймать исключение.

01.06.2011, 19:27. Показов 18848. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. В кратце есть Инди UDPServer с него шлю сообщения на определённый адрес.Если послать сообщение на не существующий адрес в сети то в отладчики борланда будет выдано исключение ошибка сокета 10054. Если сделать уже все эти действия не с отладчика а напрямую скомпилировав экзешник и запустив, то исключение не выдается.Я всячески пытался поймать исключение причем исключение ставил на отправку (функция Send()) и где то прочитал что исключения возникает абсолютно не в функции отправки а где то внутри кода при приеме. Просто при посылке данных если на той стороне не открыт сокет на прием моему компу посылается сообщение "ошибка" и он получая его дает исключение 10054 недоступность сокета или что то подобное. Так вот если запускать экзешник посылать на не существующий адрес то как я говорил исключение не выдается, но после этого компонент просто становится в нехорошую позу и не посылает больше ничего пока не выйдешь из программы и заново ее не запустишь. Было найдено решение этой программы. Что бы не перезапускать прогу достаточно выполнить код
C++
1
UDPServer->Active = false; UDPServer->Bindings->Clear(); UDPServer->Active = true;
Если выполнить данное действие прога реанимируется и все прекрассно шлет. То есть решение взять таймер на 500мс и каждые 500 мс выполнять код который выше. Но это через одно место, а хочется по нормальному. Просьба помогите поймать исключение. Заранее всем спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.06.2011, 19:27
Ответы с готовыми решениями:

Как восстановить подключение после socket error 10054
Здравствуйте. С Новым Годом:) Имеется код: for(int i = 0; i < Sections->Count; i++) { try { ...

HTTP->Get(): ошибка Socket Error # 10054. Connection reset by peer
Суть проблемы - в заголовке темы, но объясню подробнее. В программе используется обычное получение страницы методом Get в помощью...

"socket error 10054 connection reset by peer" ошибка
в общем при работе с этими 4мя строчками ошибка IdSMTP1.Port:=25; IdSMTP1.Host:='smtp.mail.ru'; ...

7
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
02.06.2011, 05:37
имеется в виду TIdUDPServer? если да, то какая версия Indy?
проект в студию можно?
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
02.06.2011, 06:02
Natrv У меня тоже эта проблема была, перешел из-за этого на TNMUDP. 10054 ловится в самом начале обработчика приёма пакетов с помощью WSAGetLastError
1
1 / 1 / 0
Регистрация: 06.01.2011
Сообщений: 24
02.06.2011, 09:03  [ТС]
Доброе утро. Версия 8.0.25. Если не ошибаюсь kzru_hunter я читал вашу тему и видел что вы перебрались на тот компонент.Но все таки хочется решить проблему. Чувствую нутром что это сам инди виноват. Но даже не знаю билдер ловит прога нет 8(
Вложения
Тип файла: rar socket10054.rar (24.9 Кб, 132 просмотров)
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
02.06.2011, 11:24
как ни прискорбно, но виноват сам инди. 8 версия глюкавая.
сам в свое время помаялся с подобными глюками.
всё заработало и пошло как по маслу только, когда установил bds2006 с Indy версии то ли 9, то ли 10, не припомню.

p.s. а вообще еще вот интересно зачем пытаться с сервака отправить что-то на несуществующий ip, точнее на хост, с которым не установлено соединение? инициатором по идее должен быть клиент.
1
1 / 1 / 0
Регистрация: 06.01.2011
Сообщений: 24
02.06.2011, 11:42  [ТС]
Ясно. Спасибо Вам за помощь буду пытаться обновлять инди. То что клиент должен слать это я знаю. А зачем слать на не существующий айпишник поясню. Пытаемся отослать сообщение клиенту зная его айпишник а он в этот момент прогу закрыл или комп перезагрузил и все компонент встал Всем спасибо
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
02.06.2011, 12:11
Цитата Сообщение от Natrv Посмотреть сообщение
Пытаемся отослать сообщение клиенту зная его айпишник а он в этот момент прогу закрыл или комп перезагрузил и все компонент встал
однако в очень редких случаях, лишь при аварийных падениях клиент не успевает сообщить серваку что отцепился.
я про то что прежде чем бездумно делать Send непонятно вообще на какой IP-шник (откуда ты его берешь?) можно пробить через Bindings на связи этот ip вообще или нет.
0
1 / 1 / 0
Регистрация: 06.01.2011
Сообщений: 24
02.06.2011, 15:21  [ТС]
Вообщем это типа удаленный админ я делаю. Так вот у меня в проге есть список контактов и есть список серверов. Я решил делать несколько серверов, а не один но очень часто часть серваков в сети а часть нет, вот откуда не существующие айпишники. Так вот прога опрашивает сервер получает свой айпи загружает контакт лист и опрашивает у сервака айпишники юзеров контакт листа. Все хорошо и можно делать бинд как вы говорите перед каждой посылкой. Но есть также звонилка как в скайпе передача видоозвонка и там постоянно по юдп я шлю сендом данные. вот там как раз пробивать перед отсылкой данных в сети или не в сети юзер наверное будет не очень правильно!? т.к. шлю я очень часто. но все равно спасибо про бинд я и не думал что можно замутить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.06.2011, 15:21
Помогаю со студенческими работами здесь

В работающем проекте с начала недели при любом запросе к Liveinternet.ru indy выдает ошибку: "socket error 10054"
Программа успешно годами парсила стату с Liveinternet до начала этой недели. С этой недели как бабка отшептала, выдает ошибку "Socket...

Нужно поймать исключение из api
Всем привет. Нужен совет по поводу того, как обработать исключение, которое приходит из подключенного api как ответ на введенные данные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru