Показать сообщение отдельно

  #9  
Старый 14.06.2010, 22:14
Faost
Новичок
Регистрация: 11.07.2009
Сообщений: 20
Провел на форуме:
39998

Репутация: 2
Отправить сообщение для Faost с помощью ICQ
По умолчанию

Цитата:
- когда принимаешь заголовок socks не проверяешь количество принятых байт
Ну это само собой, что нужно проверять, это все отлажено - тут проблем не возникает, поэтому для большей минимальности убрал проверку.
Цитата:
- неправльная работа с select. Проблемы с mail.ru полагаю из-за этого. Ты не проверяешь возможность того что селект возвратил управление по таймауту. Ты не обновляешь набор сокетов перед использованием селекта.
Насчет таймаута - я ставил даже на "бесконечное" ожидание - select(0, @fset, nil, nil, nil), проблема абсолютно идентична. Кроме того, маил.ру ну полюбасу ответит в течении 8сек на 1 запрос.
Цитата:
Ты не обновляешь набор сокетов перед использованием селекта
FD_ZERO(fset);
FD_SET(BSock, fset);
FD_SET(TargetSock, fset);
Цитата:
зачем-то использованы одновременно потоки и select
В главном потоке сервер слушает подключившихся клиентов, причем слушать след.клиента надо сразу после подключения первого.
Цитата:
VirtualAlloc для выделения буфера памяти каждый раз при приеме данных очень круто и оптимально... вообще выделяемая этой функцией память округляется до страницы(64 кб). Почему бы не использовать буфер в стеке?
Учту.
Цитата:
когда таргет закрывает соединение, надо сначала отправить все данные в его буфере клиенту, а потом уже корректно завершить соединение с помощью shutdown а не обрывать его.
А какие данные то отправлять, если они передаются ему по мере поступления от таргета? Как только таргет отправил данные, они отправились клиенту (браузеру). Если таргет вместо того, чтобы отправить данные, разрывает соединение, то что еще остается передать браузеру? Насчет shutdown - пробовал, результат тот же(

Цитата:
зачем goto? тут можно было бы и без него
можно было. Мне кажется, для форумчан использование goto очень-очень наглядно. Иначе, с множеством begin;end было бы жесть.
Цитата:
Оформление нулевое и ужасный код.
Насчет оформления - да тут и оформлять то собственно нечего, в коде нет и 200 строк. Насчет кода - поправь меня, скажи где что КРИТИЧЕСКИ криво (не учитывая goto, проверку того, в чем я уверен и что ошибочным в ходе ПРАВИЛЬНОГО теста быть не может - например, заголовков сокс. Также не считаю критически кривым кучу ExitProcess в начале, т.к. мне кажется, что это поспособствовало бы лучшему пониманию, чем множество begin;end). Ребята, вы же понимаете, что это не исходник на продажу/не для всеобщего использования в повседневной жизни, поэтому о каких программерских тонкостях типа goto может идти речь?
P.S.
Цитата:
Да, я злой и грубый, а что остается еще делать видя этот кривой код и радостные лица тех, кто его написал.
Лицо у меня далеко не радостное

Последний раз редактировалось Faost; 14.06.2010 в 22:33..
 
Ответить с цитированием