Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C++ Builder

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 53, средняя оценка - 4.98
Natrv
1 / 1 / 0
Регистрация: 06.01.2011
Сообщений: 24
#1

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

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

Всем привет. В кратце есть Инди UDPServer с него шлю сообщения на определённый адрес.Если послать сообщение на не существующий адрес в сети то в отладчики борланда будет выдано исключение ошибка сокета 10054. Если сделать уже все эти действия не с отладчика а напрямую скомпилировав экзешник и запустив, то исключение не выдается.Я всячески пытался поймать исключение причем исключение ставил на отправку (функция Send()) и где то прочитал что исключения возникает абсолютно не в функции отправки а где то внутри кода при приеме. Просто при посылке данных если на той стороне не открыт сокет на прием моему компу посылается сообщение "ошибка" и он получая его дает исключение 10054 недоступность сокета или что то подобное. Так вот если запускать экзешник посылать на не существующий адрес то как я говорил исключение не выдается, но после этого компонент просто становится в нехорошую позу и не посылает больше ничего пока не выйдешь из программы и заново ее не запустишь. Было найдено решение этой программы. Что бы не перезапускать прогу достаточно выполнить код
C++
1
UDPServer->Active = false; UDPServer->Bindings->Clear(); UDPServer->Active = true;
Если выполнить данное действие прога реанимируется и все прекрассно шлет. То есть решение взять таймер на 500мс и каждые 500 мс выполнять код который выше. Но это через одно место, а хочется по нормальному. Просьба помогите поймать исключение. Заранее всем спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2011, 19:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос UDP Socket Error 10054. Есть решение. Нужно только поймать исключение. (C++ Builder):

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

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

Server Socket, Asynchronous socket error 10053 - C++ Builder
Всем привет. Сразу к делу. Работаю с компонентом ServerSocket, при приеме данных возникает asynchronous socket error 10053. Сервер...

Поймать исключение при загрузке отсутствующего файла в Memo - C++ Builder
Доброго времени суток, нужно написать исключение(exception) для программы, в моем случае исключение об отсутствии прикрепленных к...

Программирование Udp socket в билдере - C++ Builder
не работает сторчка ресивлн виснит там if (WSAStartup(0x0101, &wsa_data) || wsa_data.wVersion != 0x0101) ...

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

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

p.s. а вообще еще вот интересно зачем пытаться с сервака отправить что-то на несуществующий ip, точнее на хост, с которым не установлено соединение? инициатором по идее должен быть клиент.
1
Natrv
1 / 1 / 0
Регистрация: 06.01.2011
Сообщений: 24
02.06.2011, 11:42  [ТС] #6
Ясно. Спасибо Вам за помощь буду пытаться обновлять инди. То что клиент должен слать это я знаю. А зачем слать на не существующий айпишник поясню. Пытаемся отослать сообщение клиенту зная его айпишник а он в этот момент прогу закрыл или комп перезагрузил и все компонент встал Всем спасибо
0
AntonChik
1084 / 582 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
02.06.2011, 12:11 #7
Цитата Сообщение от Natrv Посмотреть сообщение
Пытаемся отослать сообщение клиенту зная его айпишник а он в этот момент прогу закрыл или комп перезагрузил и все компонент встал
однако в очень редких случаях, лишь при аварийных падениях клиент не успевает сообщить серваку что отцепился.
я про то что прежде чем бездумно делать Send непонятно вообще на какой IP-шник (откуда ты его берешь?) можно пробить через Bindings на связи этот ip вообще или нет.
0
Natrv
1 / 1 / 0
Регистрация: 06.01.2011
Сообщений: 24
02.06.2011, 15:21  [ТС] #8
Вообщем это типа удаленный админ я делаю. Так вот у меня в проге есть список контактов и есть список серверов. Я решил делать несколько серверов, а не один но очень часто часть серваков в сети а часть нет, вот откуда не существующие айпишники. Так вот прога опрашивает сервер получает свой айпи загружает контакт лист и опрашивает у сервака айпишники юзеров контакт листа. Все хорошо и можно делать бинд как вы говорите перед каждой посылкой. Но есть также звонилка как в скайпе передача видоозвонка и там постоянно по юдп я шлю сендом данные. вот там как раз пробивать перед отсылкой данных в сети или не в сети юзер наверное будет не очень правильно!? т.к. шлю я очень часто. но все равно спасибо про бинд я и не думал что можно замутить
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2011, 15:21
Привет! Вот еще темы с ответами:

Ошибка: Socket Error #11001 или socket error #10051 - Delphi
Делаю простую проверку подключен к нету комп или нет procedure TForm1.Button1Click(Sender: TObject); var Connected: Boolean; ...

Soket Error #10054 Connection reset by peer - Delphi
Здравствуйте, выдает Ошибку :( Вот код программы: procedure TForm1.sButton1Click(Sender: TObject); begin idIRC1.Nick:=':m1010711'; ...

Обход error #10054 connection reset by peer - Delphi
Всем привет, при получении или отправке запросов на некий сайт X.com, то вылетает такая ошибка, гуглил, через try,except ...

Поймать исключение - C++ Qt
Почему-то не ловятся исключения: try { return a.exec(); } catch (...) { qDebug() << "Exception!"; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.06.2011, 15:21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru