Тема: SOCKS4 Server
Показать сообщение отдельно

  #4  
Старый 02.01.2008, 02:00
DWORD
Участник форума
Регистрация: 24.07.2007
Сообщений: 138
С нами: 9894190

Репутация: 215
По умолчанию

Код:
while ( true )
Лучше for(;;), вроде даже _Great_ на этом форуме рассказывал почему.
Код:
if ( stArgv.bLog == TRUE )
Сравнивать явно с условием ИСТИНА "считается" плохим тоном здесь, но даже не в этом дело, а в том, что в C++ никто не обещал существование константы TRUE.
Код:
uVal = 1;
ioctlsocket(sockAcc, FIONBIO, &uVal);
...
do
		nLen = recv(sockData, &cDummy, sizeof ( cDummy ), 0);
	while ( (nLen > 0) && (cDummy != cCond) );
У вас сервер по временам центральный ЦП не кушает под 100%? Холостой цикл (в общем случае успешный select, который вы сделали по-выше вас не спасет).
Код:
typedef struct tag_SOCKS4_REQUEST
{
	BYTE ucVersion;
	BYTE ucCommand;
	WORD wDestPort;
	DWORD dwDestIp;
} SOCKS4_REQUEST;

typedef struct tag_CONFIG_STRUCT
{
	int nPort;
	u_long ulListen;
	BOOL bLog;
} CONFIG_STRUCT;

typedef struct tag_THREAD_ARGV_STRUCT
{
	SOCKET sockParam;
	sockaddr_in saParam;
	BOOL bLog;
} THREAD_ARGV_STRUCT;
В С++ typedef ненужно писать перед объявлением структуры, имя структуры также является именем соответствующего типа даных.
Код:
closesocket(sockClnt);
shutdown(sockClnt, 0);
Код:
closesocket(sockAcc);
shutdown(sockAcc, 0);
...


----------------------
А вообще мне понравилось, хоть и нет в этом никакого смысла!
----------------------
 
Ответить с цитированием