|
0 / 0 / 0
Регистрация: 08.06.2013
Сообщений: 13
|
|||||||||||||||||||||||||||||||
Программа падает на функции send()08.06.2013, 10:32. Показов 3621. Ответов 12
Метки нет (Все метки)
Здравствуйте. Пишу webproxy.
Вроде все работает: Посылаю запрос на proxy, proxy парсит заголовки, создает соединение к удаленному серверу и запрашивает страницу, получает страницу, обрабатывает и отдает ее клиенту. Возникла проблема, если я резко в браузере обновляю страницу (не дожидаюсь загурзки) то программа вылетает на функции send (write) sockets функции WriteData Вылетает при пересылки данных от proxy к клиенту. Возможность записи в сокет клиента проверяю (w1) Пробую как в cygwin так и на unix сервере
Удаляем клиента:
Вылетает в этом блоке на функции WriteData:
Подскажите, пожалуйста, в чем может быть проблема.
0
|
|||||||||||||||||||||||||||||||
| 08.06.2013, 10:32 | |
|
Ответы с готовыми решениями:
12
Ошибка в функции send() как исправить Сокеты: после вызова send программа зависает на функции recv Почему при ответе на пакет ( recv / send ) скорость очень сильно падает ? |
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 08.06.2013, 16:31 | |
|
Что значит падает?
0
|
|
|
0 / 0 / 0
Регистрация: 08.06.2013
Сообщений: 13
|
|
| 08.06.2013, 16:57 [ТС] | |
|
Падает... Ну как бы прокси должен постоянно висеть в памяти и слушать порт а при таком обращении (Refresh) выходит из программы с ожиданием новой команды в консоли.
--- Вспомнилось: Читаю данные с удаленного сервера, метод передачи Transfer-Encoding: chunked, заголовки которые отправляю от proxy к клиенту не меняю (сейчас данный заголовок удаляю и отправляю Content-Length) но тело отправляю html текстом без разделителей r\n[hex_size]\r\n и так же вылетает на функции write (send) такое ощущение что клиент (веб браузер) не увидел размер части тела и просто закрывает соединение и из за этого и падает программа. Сокет выбираю на готовность чтения и записи и тогда уже продолжаю обрабатывать в программе данные, т.е. вроде все правильно делаю. На возможные exit(0); в программе ставил отладочную информацию, ничего не выяснил
0
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 08.06.2013, 17:03 | |
|
Еще раз, это сигфолт? -1 в send() ? что-то другое?
0
|
|
|
0 / 0 / 0
Регистрация: 08.06.2013
Сообщений: 13
|
|
| 08.06.2013, 17:09 [ТС] | |
|
Если я вас правильно понял (-1 это возвращаемое значение функции send, означающее ошибку) то никакой ошибки не возвращается, программа просто падает. Делаю так (отладочная информация):
printf("%i\r\n", __LINE__); ret = send( fd, rcvbuf_pntr, wr_buf_size, 0 ); printf("%i\r\n", __LINE__); В итоге не видим номер строки после функции send() А можно на англиском языке значение сигфолт, почитаю что это такое
0
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 08.06.2013, 17:20 | |
|
segfolt
оно же Segmentation fault
0
|
|
|
0 / 0 / 0
Регистрация: 08.06.2013
Сообщений: 13
|
|
| 08.06.2013, 17:24 [ТС] | |
|
всё сообразил, были такие сообщения иногда.
![]() В данном случае не было такого сообщения, просто завершение программы и запрос новой команды в консоле $
0
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 08.06.2013, 17:33 | |
|
6oTaHuK, ну запустите под отладчиком. Там скажут за что убили. Или в системном логе посмотрите. Правда, причину кроме проблем с rcvbuf_pntr придумать сложно.
0
|
|
|
0 / 0 / 0
Регистрация: 08.06.2013
Сообщений: 13
|
|||||||
| 08.06.2013, 17:55 [ТС] | |||||||
|
Посмотрите пожалуйста архив в 3-ем сообщении кто разбирается в сокетах, может что не так, может необходимо что то дополнительно проверить кроме вызовом функции select перед вызовом функции send
Добавлено через 2 минуты Добавлено через 18 минут Попробовал, изменил функцию:
Так же вызов функции send произошел но на ней же и прервалась программа т.е. номер строки за функцией send не вывел в окно терминала---
0
|
|||||||
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 08.06.2013, 18:05 | |
|
Ищите, где портите rcvbuf_pntr и возможно все, что объявлено за ним.
0
|
|
|
0 / 0 / 0
Регистрация: 08.06.2013
Сообщений: 13
|
|
| 09.06.2013, 05:39 [ТС] | |
|
Ну слово "портить" новое для меня... Это первая программа на СИ...
А то что прямо в функции объявил строку char text[]="gggggggggggggggg gggggggggggggggggggg"; и ее же передаю мне кажется с rcvbuf_pntr снимает подозрения. Только что проверил прокси написанный н php и работающий на этом же сетевом диске, вроде таких прблем не возникло (refresh, F5) Добавлено через 11 часов 24 минуты Уважаемая администрация, удалите пожалуйста вложение в третьем сообщении Урл
0
|
|
|
0 / 0 / 0
Регистрация: 08.06.2013
Сообщений: 13
|
|
| 09.06.2013, 08:03 [ТС] | |
|
Выложу исходники, буду благодарен если кто глянет
Достучаться до прокси можно по адресу: localhost:8080/webproxy/03/http/www.yandex.ru/
0
|
|
|
0 / 0 / 0
Регистрация: 08.06.2013
Сообщений: 13
|
||||||
| 10.06.2013, 03:39 [ТС] | ||||||
|
Запустил с дебагером, вот результат:
--- Добавил (может не корректно, позже буду разбираться): signal(SIGPIPE, SIG_IGN);
0
|
||||||
| 10.06.2013, 03:39 | |
|
Помогаю со студенческими работами здесь
13
Почему программа "падает" на функции заполнения дерева? Нужен урок по функции Send Keys Функции puts(), send(), recv() и какая-то дичь Программа падает
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|