|
#1
|
|||
|
|||
HTTP-прокси
реализовываю сабж с ипользованием WinSock и столкнулся с проблемами.
1) Создаю сокет, слушающий порт для локальных подключений. 2) Перевожу в асинхронный режим и привязываю к функции окна, на события FD_ACCEPT, FD_CLOSE, FD_READ. 3) Когда подключается клиентское приложение, если требуется, проходит авторизацию(ну тут все верно и работает). И после прохождения авторизации клиентом, для его сессии создается клиент-сокет, для которого вызываю Connect к запрошенному узлу.(реализованы режимы GET, POST, CONNECT). клиент-сокет тоже переводится в асинхронный режим на то же окно, на события FD_CONNECT, FD_CLOSE, FD_READ, просто под другим сообщением(дабы разделить серв от клиент-сокетов). 4) когда клиент-сокет подключается к внешнему узлу, я тут же пересылаю туда данные, которое прислало мне клиентское приложение(это для GET и POST), т.е. фактически пересылаю запрос дальше. 5) когда срабатывает FD_READ на клиент-сокете(т.е. внешний хост передает ответ), я ТУТ ЖЕ передаю клиентскому приложению. --- Когда размер данных небольшой, все проходит нормально, но если это, скажем, файл в мегабайта 2, браузер(как пример клиентского приложения ) "захлебывается" такой интенсивной передачей(я так думаю). В чем может быть проблема? {если проблема в самой - неверной - организации прокси-сервера, подскажите что нужно реорганизовать} |