![]() |
SOCKS4 Server
Написал простенький сокс4 сервер. Может кому-то понадобится.
Умеет парсить коммандную строку для задания параметров порта, адресса для бинда, введения логов. Справка по параметру --help ( -h ). + исходники С Наступающим! ;) Скачать |
Прикольно, огромное спасибо. Буду на досуге разбирать код )
|
С наступающим :)
|
Код:
while ( true )Код:
if ( stArgv.bLog == TRUE )Код:
uVal = 1;Код:
typedef struct tag_SOCKS4_REQUESTКод:
closesocket(sockClnt);Код:
closesocket(sockAcc);---------------------- А вообще мне понравилось, хоть и нет в этом никакого смысла! ---------------------- |
Цитата:
А все остальное - да, согласен, быдлокодинг... Особенно про == TRUE. |
Цитата:
|
>ну наверн потомучто экономится пару байт : D ну и исчезает бесползное сравнение с тру... : D
конпеляторы уже давно делают параллелизацию кода, оптимизацию под всякие SSE, MMX и конкретные процессоры, выкидывать неиспользуемый код, заменять константы,и ты думаешь, они не выкинут твое сравнение while (1) ? я пишу Код:
while (1)Код:
for (;;)Цитата:
|
PS
но ни один конпелятор тебе не поможет, если ты будешь писать ТАКОЕ Код:
for ( int i=0; i<nCount; i++ )unsigned long __stdcall AccThread а тут вдруг BOOL ParseCmdLine Если ты все-таки решил юзать виндо-зависимые техники, то время (строкой) получается намного проще, нежели так: Код:
_snprintf(szLogText, nLogLenth, "[%s] [%02d-%02d-%02d %02d:%02d:%02d]\r\n%s\r\n", szIp, stTime->tm_year+1900, stTime->tm_mon+1, stTime->tm_mday, stTime->tm_hour, stTime->tm_min, stTime->tm_sec, szText);И ещё, почему UNICODE? Нафиг тут оно надо, по два байта хранить на символ? А это что? Код:
#pragma comment(lib, "user32.lib") |
Действительно, невероятно, но факт. while(1) в MSVS при дефолтных настройках оптимизации дает:
Код:
0041139E mov eax,1 Код:
0041139E nop |
Во теоретики! :) Один байт економии это пипец как много, особенно если он для СоксСервера. :) Начитавшись советов больше не подойду к С и Делфи, буду только на асме кодить. Клянусь, клянусь, клянусь :)
|
DWORD, да, но во-первых, у меня к студии прикручен Intel-конпелятор, во-вторых, я всегда собираю с оптимизацией, которой у него очень даже дофига.
Ну а вообще да. В общем случае лучше использовать for(;;) ... Но интел все равно крут. Цитата:
|
Цитата:
Только ты KEZ меня понимаешь :) А вобще про оптимизацию лучше почитать у Криса Касперского. Он много работает в этом направлении. Респект ему :) |
Да странно это. Человек делится исходниками сокс-а а ему "парят" про оптимизацию на С-и при чем тут оптимизация? Если бы кто-то (кому не жалко.... мну жалко) выдал тут код на асинхронных сокетах и обьяснял бы ему в чем асинхронные лучше блокирующих, то тогда бы - ЭТО БЫЛО ПО ДЕЛУ!
А так гон.... бестолковый. Что по вашему проще писать картины или быть критиком? |
Вопросец 1: а эта штучка работает у когонить вообще?
У меня через freecap ничего пахать не захотело. Вопросец 2: я вот сорец посмотрел, поправьте меня, но помоему там если клиент (браузер) не рвёт соединение после отправки запроса и получения ответа а шлёт новый запрос но уже на другой хост, запрос пойдёт на старый хост и счастья не будет. ЗЫ я может криво написал... не спал давно :mad: ЗЗЫ плюс ТС всёравно заслужил. |
Цитата:
RFC по socks надо читать. Все что передает клиент после установления конекта идет к целевому серверу. Единственный вариант поменять цель - новый конект. |
| Время: 01:00 |