Комментарии 11
думаю, кат не помешает)
Естественным вариантом для меня стала реализация с использованием ассемблера.
Вы — представитель вымирающего вида?! :)
соответственно для windows forms и console приложения
Только не windows forms :)
Есть пара мест, где можно еще улучшить программу)
Там, где читаем структуру CONNECT_SOCK4, recv может вернуться, прочитав меньше 9 байт.
Там, где передаём полезные данные, send может вернуться, отослав меньше данных, чем было в буфере.
Оно конечно маловероятно при маленьких размерах буферов, да и алгоритм Нагла никто не отменял. Но с первой проблемой я встретился, когда пытался отправить структуру CONNECT_SOCK4 сокс-серверу несколькими вызовами send, т.к. не охота было выделять память и копировать туда параметры.
Там, где читаем структуру CONNECT_SOCK4, recv может вернуться, прочитав меньше 9 байт.
Там, где передаём полезные данные, send может вернуться, отослав меньше данных, чем было в буфере.
Оно конечно маловероятно при маленьких размерах буферов, да и алгоритм Нагла никто не отменял. Но с первой проблемой я встретился, когда пытался отправить структуру CONNECT_SOCK4 сокс-серверу несколькими вызовами send, т.к. не охота было выделять память и копировать туда параметры.
Вполне возможно, я указывал, что программа не оптимизирована. По факту на текущий вариант находящийся в архиве + статью я потратил часа два-три… Об оптимизации даже не задумывался. Те же варианты, которые у меня сделаны в виде библиотеки под линковку в C — там я оптимизировал уже более конкретно, но соответственно и времени на это было потрачено конечно больше.
НЛО прилетело и опубликовало эту надпись здесь
Просьба не в тему: посоветуйте литературу по сокетам.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Написание простейшего SOCKS4 сервера на языке Assembler