Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
CyberForum.ru - форум программистов и сисадминов > Форум Форум программистов > Форум C++ > Форум C++ Builder
Восстановить пароль Регистрация

Ответ Создать новую тему
 
01.06.2011, 19:27   #1
Natrv
Новичок
Регистрация: 06.01.2011
Сообщений: 23
Репутация: 1 (1)
UDP Socket Error 10054. Есть решение. Нужно только поймать исключение. / C++ Builder

Всем привет. В кратце есть Инди UDPServer с него шлю сообщения на определённый адрес.Если послать сообщение на не существующий адрес в сети то в отладчики борланда будет выдано исключение ошибка сокета 10054. Если сделать уже все эти действия не с отладчика а напрямую скомпилировав экзешник и запустив, то исключение не выдается.Я всячески пытался поймать исключение причем исключение ставил на отправку (функция Send()) и где то прочитал что исключения возникает абсолютно не в функции отправки а где то внутри кода при приеме. Просто при посылке данных если на той стороне не открыт сокет на прием моему компу посылается сообщение "ошибка" и он получая его дает исключение 10054 недоступность сокета или что то подобное. Так вот если запускать экзешник посылать на не существующий адрес то как я говорил исключение не выдается, но после этого компонент просто становится в нехорошую позу и не посылает больше ничего пока не выйдешь из программы и заново ее не запустишь. Было найдено решение этой программы. Что бы не перезапускать прогу достаточно выполнить код
Код C++
1
UDPServer->Active = false; UDPServer->Bindings->Clear(); UDPServer->Active = true;
Если выполнить данное действие прога реанимируется и все прекрассно шлет. То есть решение взять таймер на 500мс и каждые 500 мс выполнять код который выше. Но это через одно место, а хочется по нормальному. Просьба помогите поймать исключение. Заранее всем спасибо.
01.06.2011, 19:27
AdAgent
Объявления
02.06.2011, 05:37   #2
AntonChik
Форумчанин
Регистрация: 11.11.2008
Сообщений: 1,511
Репутация: 1060 (558)
Лучшие ответы: 19
UDP Socket Error 10054. Есть решение. Нужно только поймать исключение.

имеется в виду TIdUDPServer? если да, то какая версия Indy?
проект в студию можно?
Другие темы раздела
C++ Builder Создание новой папки bsSkinFileListView1 (BusinessSkinForm)
Добрых суток времени суток форумчяни, Если ктото встречался с библиотекой BusinessSkinForm подскажыте как в компоненте этой билиотеки (ТbsSkinFileListView) создавать папки при нажатии на кнопку. Добавлено через 1 час 5 минут Или просто как создать папку?????
C++ Builder составьте схему
я учусь в техе и мне нужно решить задачи №1 составьте схему с 2 входами и одним выходом содержащую элементы 2и 5 или 3не (и их надо по формулам росписоть) №2 определить значение формул 2 способами а) при использовании таблицы истинности б) использовать формулы преобразований...
02.06.2011, 06:02   #3
kzru_hunter
Форумчанин
Регистрация: 01.02.2011
Сообщений: 1,529
Репутация: 917 (650)
Записей в блоге: 1
Лучшие ответы: 34
UDP Socket Error 10054. Есть решение. Нужно только поймать исключение.

Natrv У меня тоже эта проблема была, перешел из-за этого на TNMUDP. 10054 ловится в самом начале обработчика приёма пакетов с помощью WSAGetLastError
02.06.2011, 09:03  [ТС]   #4
Natrv
Новичок
Регистрация: 06.01.2011
Сообщений: 23
Репутация: 1 (1)
UDP Socket Error 10054. Есть решение. Нужно только поймать исключение.

Доброе утро. Версия 8.0.25. Если не ошибаюсь kzru_hunter я читал вашу тему и видел что вы перебрались на тот компонент.Но все таки хочется решить проблему. Чувствую нутром что это сам инди виноват. Но даже не знаю билдер ловит прога нет 8(
Вложения
Тип файла: rar socket10054.rar (24.9 Кб, 105 просмотров)
02.06.2011, 09:03
AdAgent
Объявления
02.06.2011, 11:24   #5
AntonChik
Форумчанин
Регистрация: 11.11.2008
Сообщений: 1,511
Репутация: 1060 (558)
Лучшие ответы: 19
UDP Socket Error 10054. Есть решение. Нужно только поймать исключение.

как ни прискорбно, но виноват сам инди. 8 версия глюкавая.
сам в свое время помаялся с подобными глюками.
всё заработало и пошло как по маслу только, когда установил bds2006 с Indy версии то ли 9, то ли 10, не припомню.

p.s. а вообще еще вот интересно зачем пытаться с сервака отправить что-то на несуществующий ip, точнее на хост, с которым не установлено соединение? инициатором по идее должен быть клиент.
02.06.2011, 11:42  [ТС]   #6
Natrv
Новичок
Регистрация: 06.01.2011
Сообщений: 23
Репутация: 1 (1)
UDP Socket Error 10054. Есть решение. Нужно только поймать исключение.

Ясно. Спасибо Вам за помощь буду пытаться обновлять инди. То что клиент должен слать это я знаю. А зачем слать на не существующий айпишник поясню. Пытаемся отослать сообщение клиенту зная его айпишник а он в этот момент прогу закрыл или комп перезагрузил и все компонент встал Всем спасибо
02.06.2011, 12:11   #7
AntonChik
Форумчанин
Регистрация: 11.11.2008
Сообщений: 1,511
Репутация: 1060 (558)
Лучшие ответы: 19
UDP Socket Error 10054. Есть решение. Нужно только поймать исключение.

Цитата Сообщение от Natrv Посмотреть сообщение
Пытаемся отослать сообщение клиенту зная его айпишник а он в этот момент прогу закрыл или комп перезагрузил и все компонент встал
однако в очень редких случаях, лишь при аварийных падениях клиент не успевает сообщить серваку что отцепился.
я про то что прежде чем бездумно делать Send непонятно вообще на какой IP-шник (откуда ты его берешь?) можно пробить через Bindings на связи этот ip вообще или нет.
02.06.2011, 15:21  [ТС]   #8
Natrv
Новичок
Регистрация: 06.01.2011
Сообщений: 23
Репутация: 1 (1)
UDP Socket Error 10054. Есть решение. Нужно только поймать исключение. / C++ Builder

Вообщем это типа удаленный админ я делаю. Так вот у меня в проге есть список контактов и есть список серверов. Я решил делать несколько серверов, а не один но очень часто часть серваков в сети а часть нет, вот откуда не существующие айпишники. Так вот прога опрашивает сервер получает свой айпи загружает контакт лист и опрашивает у сервака айпишники юзеров контакт листа. Все хорошо и можно делать бинд как вы говорите перед каждой посылкой. Но есть также звонилка как в скайпе передача видоозвонка и там постоянно по юдп я шлю сендом данные. вот там как раз пробивать перед отсылкой данных в сети или не в сети юзер наверное будет не очень правильно!? т.к. шлю я очень часто. но все равно спасибо про бинд я и не думал что можно замутить
02.06.2011, 15:21
Yandex
Объявления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
Delphi: "socket error 10054 connection reset by peer" ошибка
в общем при работе с этими 4мя строчками ошибка IdSMTP1.Port:=25; IdSMTP1.Host:='smtp.mail.ru'; IdSMTP1.Username:='*******@mail.ru'; IdSMTP1.Password:='********'; IdSMTP1.Connect; // при коннекте ошибка что то с соккетами весь гугл обгуглил!ничего подобного не нашел! ...
Delphi для начинающих Don_Capone 24.08.2013 12:20
Delphi: Socket Error # 10054 Connection reset by peer
Делаю IdHTTP.Get(Edit1.text, program) выходит ошибка.Раньше код выполнялся успешно,все работало,теперь это. try except ошибку убирают,но тогда не работает.Можно ли как-то обойти?
Delphi и сети sacrafigt 27.05.2013 01:20
C++ Builder: Udp socket нужно настроить прием
Привет всем, хочу сделать простой прием и передачу между двумя Udp сокетами, отправка вроде как получилась а вот прием никак немогу сделать. Что там и где нужно писать? Когда пишу в OnRecive udpsckt2-> reciveln(); ничего не происходит, а когда в OnСonnect зависаетudpsckt2->Active=True;...
C++ Builder Konstantin_ua 18.04.2013 16:52
Delphi: ошибка Socket Error #11001 или socket error #10051
Делаю простую проверку подключен к нету комп или нет procedure TForm1.Button1Click(Sender: TObject); var Connected: Boolean; begin Try IdHTTP1.Get('http://www.ya.ru/'); connected := True; Except connected := False;
Delphi для начинающих prnira_sef 13.12.2011 19:15
Visual Basic .NET: Решение СЛАУ методом Гаусса. Как "поймать" исключение?
Здравствуйте. Очень надеюсь на помощь. Курсовая такая. Прогу сделал, но если система выходит несовместной или имеет множество решений, то происходит ошибка. То есть если делаешь столбец или строку нулевыми. Прикладываю полностью программу, попробуйте. Любые деньги заплачу)) Погибаю, недопуск...
Visual Basic .NET Alexewq 30.05.2010 17:05
Опции темы

Текущее время: 07:06. Часовой пояс GMT +4.

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.