Proxy на Visual Basic
Пишем прокси-сервер на Visual Basic

    Самый простой однопотоковый Proxy на Visual Basic
    
Руководство для начинающих программистов

    При создании этого руководства ставилась задача разработать минимальный код программы, выполняющей функции Proxy-сервера (передающей информацию с порта на порт). В программу очень легко добавить функции фильтрации (будет показано в приложении), записи логов, подмены информации (для web site promotion).
    Создадим стандартный проект Visual Basic. Разместим на форме элемент
Label “IP этого компьютера”
    
    Прокси
    
    Подключим новый компонент Winsock к проекту для работы с сетью по протоколу IP
    
    Winsock  TCP  IP
    
    TCP/IP - компонент Winsock


    Разместим на форме 2 экземпляра Winsock. Winsock1 – для серверной части и Oflameron для клиентской части. Серверная часть (Winsock1) принимает запросы от Web-броузера (например, Internet Explorer) по порту, например, 125 и передает их клиентской части. Клиентская часть Oflameron (Winsock2) по стандартному порту 80 передает запросы к реальному Web-серверу.
    
    Клиент - сервер
    
    Напишем серверную часть Proxy
    
    
Private Sub Form_Load()
    Form1.Visible = True
    Do  ''Серверную часть включаем на прослушивание порта ( Listen )
      If Winsock1.State <> sckConnected And Winsock1.State <> sckListening Then  ''Если еще нет соединения и порт не прослушивается
      Beep
        Winsock1.Close  ''Закрываем связь
        Winsock1.LocalPort = 125  ''Номер порта для прослушивания
        Winsock1.Listen  ''начинаем прослушивать порт 125
      End If
      DoEvents
    Loop ‘Повторять
    
End Sub
    
    Обработка соединений
    
    
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)  ''Если есть запрос на соединение
    Winsock1.Close  ''Прекращаем прослушивать порт
    Winsock1.Accept requestID  ''Подсоединяем клиента (броузер) по номеру его запроса
    
End Sub
    
    Winsock1_ConnectionRequest – запрос на соединение
    
    ConnectionRequest


    Объявим переменную
    Dim ToServer As String  ''Для отправки запроса от клиентской части Proxy к Web-серверу
    
    
    
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)  ''Обработка поступающих данных (запросов от Web-броузера)
    Dim ServerData As String  ''Объявим переменную для принятых данных ServerData
    Winsock1.GetData ServerData  ''Принять данные в переменную
    ToServer = ServerData  ''Переписать запрос в переменную для отправки к Web-серверу
    Oflameron_SendToWebserver  ''Отправить запрос к Web-серверу
    
End Sub
    
    Строка «ToServer = ServerData» - не обязательна, имеет смысл, если нужно обрабатывать данные – писать в лог, фильтровать, делать поиск данных в запросах, подменять информацию (например, заменять URL в загружаемых web-страницах на свои) и т.д.
    
    Полный VB проект данного этапа разработки – в файле
vbpt1.zip
    
    
    Пишем клиентскую часть Proxy
    
    (для работы с реальным Web-сервером. Подключение к Web-серверу, отправка запросов и прием данных)
    
    Объявим переменные
    
    Dim Webport  ''Номер порта
    Dim Data As String  ''Для получения данных от Web-сервера
    
    
Private Sub Oflameron_SendToWebserver()  ''Подключиться к Web-серверу
    Oflameron.Close  ''закрываем связь
    Oflameron.RemoteHost = "10.62.182.54"  ''Адрес Web-сервера или его IP адрес
    Oflameron.RemotePort = 80  ''Номер порта. Стандартно для HTTP
    Oflameron.Connect  ''подключаемся к Web-серверу
      Webport = Oflameron.RemotePort  ''Запомнить номер порта (не обязательная строка)
    
End Sub
    
    Процедура Oflameron_Connect выполняет действия как только будет установлено соединение с Web-сервером
    
    
Private Sub Oflameron_Connect()  ''Отправить запрос к Web-серверу
    If Oflameron.State <> sckConnected Then Exit Sub  ''Проверить. Если нет подключения, то выйти из процедуры
    Oflameron.SendData ToServer  ''Отправить строку запроса на Web-сервер
    
End Sub
    
    Процедура получения данных от Web-сервера
    
    
Private Sub Oflameron_DataArrival(ByVal bytesTotal As Long)  ''Будет вызываться, когда придут какие-то данные от Web-сервера
      Text1.Text = Oflameron.State
    If Oflameron.State <> sckClosing Then
      Oflameron.GetData Data  ''будет содержать данные, полученные от Web-сервера
      Winsock1.SendData Data  ''Отправить полученные данные от Web сервера на Web-броузер
    End If
    
End Sub


    HTTP- поставили номер порта 125 для серверной части Proxy


    Поменяем настройки Proxy и порта в Internet Explorer, если Вы используете IE
    
    Browser
    
    чтобы запросы отправлялись к нашему Proxy
    
    LAN
    
    Настройка LAN
    
    IP
    
    Где LAN - адрес нашей Proxy (IP-адрес Вашего компьютера) и порт 125, который будет прослушивать серверная часть Вашего Proxy
    
    Загрузим в броузер Internet Explorer страницу с
вебсервера
    
    Website
    
    Proxy-сервер работает – пересылает запросы и полученные данные.
    
    Это работающий пример очень простого однопоточного Proxy-сервера в самой минимальной конфигурации кода. Позволяет понять важные особенности сетевого программирования, создать рабочий экземпляр программы.
    
    Полный VB проект данного этапа разработки – в файле
vbpt2.zip
    

Скачать Руководство >>


    Программа и документ вполне достаточны для сдачи курсовой работы по программированию.
    Для программистов, желающих работать над развитием программы, в следующей части документа будет показано, как дорабатывать Proxy. Если Вы нашли ошибки в программе или можете предложить лучшее решение – пишите на
cardclub@mail.ru
    
    Готовый дизайн этой страницы можно
скачать здесь.
    
    

  Интернет-каталог   Quality Link Exchange каталог сайтов!   Классический рубрикатор Интернет  Каталог Internext. Раздел Компьютеры и оргтехника
  
  ALLlinks каталог сайтов - каталог ссылок рунета
  
  
  Найдётся всё  Каталог Сайтов ВебПолигон
    
     Рефераты   Полиграфия   Игрушки   MS Word   Бесплатные курсовики   Игры для детей   Мобильники
    
     Бесплатный Хостинг [1]   Весь Хостинг [2]