![]() |
|
Модераторы: feodorv |
![]()
|
|
| Mark4545 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 6.11.2006 Репутация: нет Всего: нет |
После обмена служебной инфой между клиентом и сервером(сокс5) , идет передача запрашиваемой инфы вот тут то и возникли проблемы.
Какой день уже думаю что не так. |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 1 Всего: 121 |
Ну во-первых, в чём смысл передавать по 1 байту? Пусть фрагментацией занимаются более низкие уровни, прикланой уровень этого касаться не должен. Во-вторых ты уверен, что блокирующий режим(синхронный) устанавливается верно? И, наконец, что значит нестабильный?
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Mark4545 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 6.11.2006 Репутация: нет Всего: нет |
Блокирующий устанавливаеться верно например если делать так.
В чем заглючаеться не стабильность.Заглючаеться в том что в браузер может попадать мусор Хеддеры http протокола,может непрально передавать запросы. Чем больше размер страницы запрашиваемой тем больше шанс на мусор разный или на плохой запрос. Конечно бывают и удачные запросы редко(и когда страниы мелкие очень). Это сообщение отредактировал(а) Mark4545 - 9.9.2007, 20:31 |
|||
|
||||
| Mark4545 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 6.11.2006 Репутация: нет Всего: нет |
Стал боллее подробно расматривать все запросы, смотрю появляються например вот такая фигня
.... smth Right Headers. .... .... ost:1.ru//Поидее должен быть Host:1.ru естесно Это частный пример одного запроса,куда девалась в данном случае буква H непонятно |
|||
|
||||
| yar |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 8.9.2007 Где: Одесса, Украина Репутация: нет Всего: 8 |
Попробуйте сделать размер буфера 2
При этом оставив в send и recv 1. Возможно, происходит переполнение. В этом можно убедиться, взглянув в отладчике на содержимое c. --------------------
Если бы строители возводили здания так, как программисты пишут программы, первый же дятел уничтожил бы мировую цивилизацию.Джеральд Вайнберг |
|||
|
||||
| Mark4545 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 6.11.2006 Репутация: нет Всего: нет |
Решил проблему обнулением массивов,после того как size==0
Добавлено через 6 минут и 25 секунд Тем возникла еще одна проблемка) Код представленый ниже,по какой то причине не пашет,но если раскоментировать мессадж боксы то пашет все ок. В чем трабла?
Добавлено через 11 минут и 57 секунд а если например заменить все мессадж боксы секундным слипом то тогда пашет гуд но страницы большие грузит оч долго. |
|||
|
||||
| yar |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 8.9.2007 Где: Одесса, Украина Репутация: нет Всего: 8 |
Решение может заключаться в использовании многопоточности. Один поток читает из Accept сокета и пишет в Distanse, второй читает из Distanse и пишет в Accept.
--------------------
Если бы строители возводили здания так, как программисты пишут программы, первый же дятел уничтожил бы мировую цивилизацию.Джеральд Вайнберг |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 1 Всего: 121 |
Я собственно поэтому и спросил, установил ли ты блокирующий режим правильно? Видимо, нет. У тебя программа пытается считать из сокета данные, которые туда ещё не пришли. Решается проблема просто, есть функция select, которая может проверять возможность чтения данных из массива сокетов. Вот её и используй. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| 040375 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 6.4.2006 Репутация: 2 Всего: 2 |
Так он её и использует, только на мой взгляд неправильно. какой смысл в использовании ioctlsocket, если используется select?
Какой смысл в использовании вызова select вне цикла? Ведь этот вызов устанавливает и считывает флаги состояния сокетов. Каждый раз после завершения операции чтения/записи в дескриптор нужно снова вызывать select - чтобы определить - какие данные готовы к отправке - а какие пришли в буфер для чтения. А в чего желать от такого кода - непонятно. Я под виндой не работаю, но select и прочее - что называется winsock2 в винде - из BSD - всё похоже. |
|||
|
||||
| Mark4545 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 6.11.2006 Репутация: нет Всего: нет |
да там селект полностью непрально использовано.
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |