| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Сети > Нестабильный обмен данными |
| Автор: Mark4545 9.9.2007, 19:26 | ||
После обмена служебной инфой между клиентом и сервером(сокс5) , идет передача запрашиваемой инфы вот тут то и возникли проблемы.
Какой день уже думаю что не так. |
| Автор: W4FhLF 9.9.2007, 19:56 |
| Ну во-первых, в чём смысл передавать по 1 байту? Пусть фрагментацией занимаются более низкие уровни, прикланой уровень этого касаться не должен. Во-вторых ты уверен, что блокирующий режим(синхронный) устанавливается верно? И, наконец, что значит нестабильный? |
| Автор: Mark4545 9.9.2007, 20:28 | ||
Блокирующий устанавливаеться верно например если делать так.
В чем заглючаеться не стабильность.Заглючаеться в том что в браузер может попадать мусор Хеддеры http протокола,может непрально передавать запросы. Чем больше размер страницы запрашиваемой тем больше шанс на мусор разный или на плохой запрос. Конечно бывают и удачные запросы редко(и когда страниы мелкие очень). |
| Автор: Mark4545 9.9.2007, 21:29 |
| Стал боллее подробно расматривать все запросы, смотрю появляються например вот такая фигня .... smth Right Headers. .... .... ost:1.ru//Поидее должен быть Host:1.ru естесно Это частный пример одного запроса,куда девалась в данном случае буква H непонятно |
| Автор: yar 9.9.2007, 21:56 | ||
Попробуйте сделать размер буфера 2
При этом оставив в send и recv 1. Возможно, происходит переполнение. В этом можно убедиться, взглянув в отладчике на содержимое c. |
| Автор: Mark4545 9.9.2007, 22:11 | ||
| Решил проблему обнулением массивов,после того как size==0 Добавлено через 6 минут и 25 секунд Тем возникла еще одна проблемка) Код представленый ниже,по какой то причине не пашет,но если раскоментировать мессадж боксы то пашет все ок. В чем трабла?
Добавлено через 11 минут и 57 секунд а если например заменить все мессадж боксы секундным слипом то тогда пашет гуд но страницы большие грузит оч долго. |
| Автор: yar 10.9.2007, 06:54 |
| Решение может заключаться в использовании многопоточности. Один поток читает из Accept сокета и пишет в Distanse, второй читает из Distanse и пишет в Accept. |
| Автор: 040375 11.9.2007, 20:45 |
| Так он её и использует, только на мой взгляд неправильно. какой смысл в использовании ioctlsocket, если используется select? Какой смысл в использовании вызова select вне цикла? Ведь этот вызов устанавливает и считывает флаги состояния сокетов. Каждый раз после завершения операции чтения/записи в дескриптор нужно снова вызывать select - чтобы определить - какие данные готовы к отправке - а какие пришли в буфер для чтения. А в чего желать от такого кода - непонятно. Я под виндой не работаю, но select и прочее - что называется winsock2 в винде - из BSD - всё похоже. |
| Автор: Mark4545 12.9.2007, 20:19 |
| да там селект полностью непрально использовано. |