Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz

23.01.2009, 21:19
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме: 2823587
Репутация:
106
|
|
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)
|
|
|
|