ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

socks5 class
  #1  
Старый 23.01.2009, 21:19
Аватар для St0nX
St0nX
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме:
2823587

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

Вообщем писал класс для работы с socks5 возникли проблемы тут(файл socks5.cpp)

Код:
if(recv(s, re, sizeof(re), 0)!=-1)
рекв принимает 0 байт, но когда все те же действия делал в main все работало как часы.
вот исходники:

socks5.cpp
Код:
#include "socks5.h"

WSADATA _WsaData;

long socks5::dec_hex(int n)
{
    static char number[MAXNUMBER];
    sprintf(number, "%lx", n);
	char null = '\x0'; 
	char * adr_null = &null;
	ULONG a = strtoul(number, &adr_null, 16);
    return  a;
}



int socks5::connect_s(char *proxy_name, int proxy_port, char *host_ip, int host_port)
{
char *Message;
bool flag = false;
if(WSAStartup (0x0101, &_WsaData)!=0)
{return ERR_WSA;}
SOCKADDR_IN  anAddr;
anAddr.sin_family = AF_INET;
anAddr.sin_port = htons(proxy_port);
anAddr.sin_addr.S_un.S_addr = inet_addr(proxy_name);
s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(connect(s, (struct sockaddr *)&anAddr, sizeof(struct sockaddr))==0)
{
Message = new char[3]; 
Message[0] = 0x05;
Message[1] = 0x01;
Message[2] = 0x00;
if(send(s, Message, 3, 0)==SOCKET_ERROR)
{
return ERR_SEND;
closesocket(s);
}
memset(Message,0,3);
recv(s, Message, 3, 0);
flag = true;
}
if(flag==true)
if(Message[1])
{ 
closesocket(s);
return ERR_AUTH;
}
else
{
delete(Message);
Message = 0;
Message = new char[10];
int ip[4];
sscanf(host_ip,"%i.%i.%i.%i",&ip[0],&ip[1],&ip[2],&ip[3]);
Message[0]=0x05;
Message[1]=0x01;
Message[2]=0x00;
Message[3]=0x01;
Message[4]=dec_hex(ip[0]);
Message[5]=dec_hex(ip[1]);
Message[6]=dec_hex(ip[2]);
Message[7]=dec_hex(ip[3]);
Message[8]=0x00;
Message[9]=dec_hex(host_port);
if(send(s, Message, 10, 0)==SOCKET_ERROR)
{
return ERR_SEND;
closesocket(s);
}
memset(Message,0,10);
recv(s, Message, 10, 0);
if(Message[1])
{ 
closesocket(s);
return ERR_AUTH;
}
}
conn = true;
return 0;
};

int socks5::close_s()
{
closesocket(s);
return 0;
}

char* socks5::send_host(char *data)
{

if(conn == true)
{
char *re;
re = new char[1024];
if(send(s, data, sizeof(data), 0)==SOCKET_ERROR)
{
return (char *)ERR_SEND;
}
else
{
if(recv(s, re, sizeof(re), 0)!=-1)
{
return re;
}
else
{
	return (char *)-1;
}
}
}
else
{
return (char *)-1;
}
};

socks5::~socks5()
{
if(conn==true)
closesocket(s);
};
socks5.h
Код:
#include <winsock.h>
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")

#define MAXNUMBER  100
#define ERR_AUTH 10;
#define ERR_WSA 11;
#define ERR_SEND 12;
#define DATA_MAX 1024;

extern WSADATA _WsaData;
class socks5
{
protected:
	SOCKET s;
	bool conn;
public:
	~socks5();
	int connect_s(char *proxy_name,int proxy_port,char *host_ip,int host_port);
	char *send_host(char *data);
	int close_s();
private:
	long dec_hex(int n);
};
PS код строго не судите. Класс сырой.
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Mail.ru agent php class ntldr PHP, PERL, MySQL, JavaScript 9 26.09.2009 17:08
Продажа socks5 поштучно..... sharky_fish VPN, Proxy, Socks - Покупка, продажа 2 13.05.2009 16:28
Подкинте кто socks5 плиз hackmen Болталка 0 05.12.2008 07:26
Socks5 KPOT_f!nd VPN, Proxy, Socks - Покупка, продажа 0 18.12.2006 01:57
Socks5 скоростные fergas-socks VPN, Proxy, Socks - Покупка, продажа 3 17.11.2006 22:42



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ