Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 октября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.

CSocksifiedSocket - или как установить коннект через SOCKS4/5 прокси


Автор: Tim Kosse.

Компилятор: VC6

Этот класс наследован от CSocket и позволяет устанавливать коннект через SOCKS4/5 прокси. Для того, чтобы установить соединение с сервером через прокси Вам достаточно вызвать всего одну функцию:


 void SetProxy(int nProxyType,CString ProxyHost,int ProxyPort,
     CString ProxyUser="",CString ProxyPass="",BOOL bUseSocks5Logon=FALSE);

Параметры следующие:

- nProxyType указывает тип прокси, PROXYTYPE_SOCKS4 или PROXYTYPE_SOCKS5
- следующие два параметра указывают параметры прокси
- следующие три параметра необязательны. Они указывают, есть ли авторизация на SOCKS5.

Так же класс содержит следующие функции:

GetProxyPeerName
Наподобие GetPeerName в CAsyncSocket, но возвращает адрес сервера, с которым установлен коннект через прокси.

BOOL IsSocksified();
Используется ли прокси?

const int GetLastProxyError() const;
Возвращает последнюю ошибку прокси

Если Вы захотите использовать CSocksifiedSocket в качестве listen socket, то Вам необходимо переопределить следующую функцию:

virtual BOOL Listen(unsigned long serverIp,unsigned long &retProxyIp,int &retProxyPort);

serverIP это IP сервера, с которым уже установлен коннект через SOCKS прокси. Вы не можете использовать listen sockets через SOCKS прокси без первичного установления коннекта. retProxyIp возвращает ip ожидающего сокета на проксе, retProxyPort порт. Эти значения можно отправить на сервер, чтобы он знал как соединиться с прокси. После этого можно вызвать Accept безо всяких параметров.

Почитать про SOCKS4/5 можно здесь http://www.socks.nec.com/socksprot.html

Переопределённую функцию Accept можно также вызывать без параметров для сокетов использующих прямое соединение. Здесь Listen socket сам по себе является accepted socket.

Чтоблы изменить базовый класс для CSocksifiedSocket, измените определение (definition) CSocksifiedBaseClass в SocksifiedSocket.h

Пример:

Коннект с сервером через прокси:

CSocksifiedSocket sock;
 sock.Create();
 //Задаём параеметры прокси
 sock.SetProxy(PROXYTYPE_SOCKS4,"192.168.0.1",1080);
 //Соединяемся с сервером
 sock.Connect(ftp.microsoft.com,21);

Как Вы видете, использовать класс достатосно просто.

Создание ожидающего (listen) сокета:

CSocksifiedSocket listsock;
 sock.Create();
 //Задаём параеметры прокси
 listsock.SetProxy(PROXYTYPE_SOCKS4,"192.168.0.1",1080);
 unsigned long primaryip;
 //Заменяем первичный ip на ip сервера
 //     который будет коннектится на ожидающий (listen) сокет
 ...
 unsigned long proxyip;
 int proxyport;
 //Создание ожидающего (listen) сокета на прокси сервере
 listsock.Listen(primaryip,proxyip,proxyport);
 //Говорим серверу ip и порт ожидающего (listen) сокета для коннекта
 //      
 ...
 //Аксептим соединение
 listsock.Accept();
 

Downloads

Скачать исходник - 5.1 Kb




<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS