![]() |
|
|
![]()
|
|
| bronenos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 4.7.2007 Репутация: нет Всего: нет |
Использую ClientSocket компонент по такой схеме
Форма загружается: SSocket->Active = true; Функция посыла введенных данных: SSocket->Open(); SSocket->Socket->SendText(...); Функция обработки onRead response = Socket->ReceiveText(); Socket->Close(); Форма закрывается SSocket->Active = false; При таком порядке действий сообщение доходит каждый второй раз. Первый раз нажимаю на кнопку оно доходит, второй раз нет, третий раз доходит, четвертый нет и так далее. Что в моей схеме неправильно? |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
bronenos, имхо от количества созданных одинаковых тем, увеличится только количество предупреждений.
Вам необходимо понимать, как работает каждая из функций. Прочитайте эту тему, возможно после этого поймете вашу ошибку. -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| bronenos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 4.7.2007 Репутация: нет Всего: нет |
да я просто дважды видно кнопку нажал случайно, а там я не нашел ответа на проблему
|
|||
|
||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
bronenos, учти что сообшешения могут склеиваться при TCP.
Это происходит когда посылаешь очень часто один за другим пакетом. (Может конечно у тебя такое и небыть) Тебе надо пометить на блоки и парсить все что приходит если ты будешь серьозно этим заниматься. Это сообщение отредактировал(а) Ak47black - 8.7.2007, 13:52 |
|||
|
||||
| bronenos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 4.7.2007 Репутация: нет Всего: нет |
вот попробуйте войти
Ник tester Пасс test http://phx.freedomf.net/c_chat/chat.exe и отправить сообщение первое отправит, второе нет, 3 да, 4 нет и так далее... вот в чем трабла запросы раюотают через раз (насчет неизвестных ошибок это остаток от дебага, скор уберу) Это сообщение отредактировал(а) bronenos - 8.7.2007, 14:36 |
|||
|
||||
| bronenos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 4.7.2007 Репутация: нет Всего: нет |
Всем спасибо, проблема была в том, что я отправлял данные, когда сокет еще не соединился
|
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Я хотел чтобы вы посмотрели на последовательность действий. Но рад, что вы сами нашли решение, действительно рад. К сожалению, сейчас пошла плохая тенденция, у многих программистов есть возможность, чтобы самим найти ответ, но думать что-то не хотят ps. отметьте вопрос решенным. -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| bronenos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 4.7.2007 Репутация: нет Всего: нет |
однако вторая проблема))
после подавления ошибки и вывода информации о ней (случаются теперь асинхронные ошибки) сокет перестает работать - открытие / закрытие не помогают... че делать? |
|||
|
||||
| bronenos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 4.7.2007 Репутация: нет Всего: нет |
|
|||
|
||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
bronenos, надо онулировать его в процедуре обработки ошибок OnError, тоесть к переменной номера ошибки приравнять 0.
bronenos, по моему ты неправильно задаешь вопросы, мы тут не телепаты чтобы всё угадывать, выкладывай код или тестовый проект и описывай точно. И прочитай сначала доки. |
|||
|
||||
| bronenos |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 4.7.2007 Репутация: нет Всего: нет |
каждые 2 секунды делаю запрос
недавно начали появляться асинхронные ошибки сокета... я сделал их подавление (Socket.onError)
ошибка не выскакивает, но и больше сообщения не грузятся, то есть работа сокета останавливается. как можно восстановить его работу после Asynchronous socket error? я искал ответа на вопрос полтора дня - пока не нашел.... Это сообщение отредактировал(а) bronenos - 9.7.2007, 22:21 |
||||
|
|||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
bronenos, ты чтото нето там с этими сокетами делаешь.
Никаких подавлений в этом случае недолжен ты вообще делать, это только при попытке неправильно подсоединиться делают. (Я в Си не силён.) Ты вообще тут полный код выложи ато никто не ответит. |
|||
|
||||
| bronenos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 4.7.2007 Репутация: нет Всего: нет |
Полный код... я честно говоря не вижу в нем смысл... проблему я бы так сформулировал восстановление работоспособности сокета после Asynchronous Socket Error. Бывает, что случается ошибка во время запроса и страница не открывается, а через секунду все нормально. Вот видимо на такие моменты иногда попадает сокет и вылетает с ошибкой. Мне это надоело и я сделал подавление с попыткой CSocket->Close(); CSocket->Open(); его оживить, но не выходит.
Получается следующее.. после этой ошибки сокет перестает работать совсем, и мне эту работу надо восстановить чтоб сделать еще одну попытку запроса. |
|||
|
||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
bronenos, чета я тогда непонимаю зачем ты закрываешь его если он даже небыл открыт в случае ошибки.
Сделай что-бы ошибка обнулировалась. Если даже он такой глючиный там в Buildere (CSocket), тогда делай его в real time и в случае ошибки освобождай старый и создавай новый (компонент).
Ну необязательно полный, сделай тестовый проект который отображает только ошибку. Это сообщение отредактировал(а) Ak47black - 10.7.2007, 12:16 |
|||
|
||||
| bronenos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 4.7.2007 Репутация: нет Всего: нет |
Вот что я делаю в случае ошибки (CSocket.onError)
А что надо делать, чтоб переменной CSocket присвоить новый сокет? У меня получается, видимо, только локально его создать...... Это сообщение отредактировал(а) bronenos - 10.7.2007, 13:54 |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |